KodeGym/Blog Jawa/Acak/Tugas basa Jawa kanthi corak: halo, wawancara!
John Squirrels
tingkat
San Francisco

Tugas basa Jawa kanthi corak: halo, wawancara!

Diterbitake ing grup
Kanca siswa CodeGym sing paling apik yaiku tugas pemrograman, Java, lan validator tugas. Nanging, ana wektu nalika saben pangembang padawan kudu miwiti mlaku-mlaku, nggawe proyek mini dhewe, lan nyiapake dhewe kanggo wawancara. Siji bakal mikir yen wawancara bakal duwe tugas praktis Jawa sing padha karo sing ditemokake ing kursus iki. Lan ing sawetara kasus, nanging sawetara perusahaan seneng takon pitakonan trick utawa soko sing ora pati ngerti. Kanggo ngindhari rasa bingung nalika wawancara sing ngepenakke, luwih becik nyoba ngrampungake tugas basa Jawa dhewe ing omah.
Tugas basa Jawa kanthi corak: halo, wawancara!  - 1
Ing artikel iki, kita bakal njelajah 5 tugas angel kasebut. Disaranake sampeyan maca kahanan kasebut lan nyoba ngrampungake dhewe. Lan siji maneh: aja lali nindakake tugas Basa Jawa ing kursus iki saben dina!

Tugas 1: Nggawe loop tanpa wates saka awal

Blok kode wis diwenehake. Tambah kanggo nggawe daur ulang tanpa wates.
class ToInfinity {
    public static void main(String[] args) {

// Insert code here

        for (int i = start; i <= start + 1; i++) {
             /* This should be an infinite loop, but don't change anything here */
        }
    }
}
" Iku ora angel, " sampeyan ngomong. Sampeyan wis bola-bali nemokake dhewe ing skenario iki: nalika ngrampungake tugas Jawa, sampeyan nggawe loop tanpa wates lan kudu mikir babagan carane nyingkirake. Inggih, punika kosok wangsulipun. Mangkene bagean sing angel: sampeyan ora bisa ngganti loop dhewe utawa kondisi metu. Mung ana rong iterasi. Nanging, padha cukup kanggo nggawe loop tanpa wates. Kayane mung kudu dieksekusi kanggo rong iterasi, nanging sampeyan bisa nggawe tanpa wates nggunakake overflow. Apa sampeyan wis ngira carane?

Solusi

Amarga overflow, Integer.MAX_VALUEpunika nilai maksimum sing intbisa disimpen ing Jawa. Yen sampeyan tekan Integer.MAX_VALUElan nambah nilai iki, sampeyan muter maneh menyang Integer.MIN_VALUE, utawa luwih, menyang nilai sing paling murah Integer. Mangkono, kanggo ngrampungake tugas Jawa iki, kita mung kudu nemtokake 1 kurang saka intnilai maksimum kanggo startvariabel. Kode Java kanggo tugas iki:
class ToInfinity {
    public static void main(String[] args) {
        int start = Integer.MAX_VALUE - 1;
        for (int i = start; i <= start + 1; i++) {
            // Infinite loop
            System.out.println(i); // Be sure we are in an infinite loop
        }
    }
}
Apa sing kedadeyan? Kita miwiti karo wiwitan = 2147483645 (Integer.MAX_VALUE-1). Ing iterasi sabanjure, nilai dadi 2147483645, banjur 2147483646, banjur -2147483648, -2147483647 ... lan sateruse.

Tugas 2: Nggawe komentar sing bisa dieksekusi

Inggih, kene kita! Saka pawulangan pisanan, kita wis krungu manawa komentar ora dieksekusi. Mulane diarani komentar. Kita mikir yen solusi kanggo tugas iki ora mesthi ketok kanggo programer Jawa, malah sing berpengalaman. Nanging, ana siji cara sing angel (nanging "sah") kanggo nggawe JVM nglakokake komentar. Apa sampeyan bisa ngerti ngendi kita arep? Coba tebak!

Solusi

Kode Java kanggo tugas iki:
public class ExecutableComment {
    public static void main(String[] args) {
        // The comment below will be executed!
        // \u000d System.out.println("executable comment");
    }
}
Yen kita ngetik kode Jawa iki menyang IDE, kita bakal entuk:
executable comment
Iki amarga compiler Jawa nerjemahake karakter Unicode \u000dminangka baris anyar, lan maca kode kita kaya iki: kode Jawa kanggo tugas iki, minangka diinterpretasikake dening compiler:
public class ExecutableComment {
    public static void main(String[] args) {
        // The comment below will be executed!
        // \u000d
        System.out.println("comment executed");
    }
}

Tugas 3: Nggawe loop sing dijenengi

Iki minangka anggota seri liyane kanthi judhul "Masalah Pemrograman Java Praktis kanggo Sapi Bulat". Ing pangertèn sing ora cetha kok iki malah perlu: iku ora kamungkinan sing loop bakal gelo kanggo kasunyatan sing durung diwenehi jeneng. Oalah, penting amarga alasan liyane: basa kasebut ngidini sampeyan menehi jeneng loop.

Solusi

Cathetan: iki "jeneng" dikenal kanggo sawetara wong minangka "label", lan padha ora dianjurake kanggo nggunakake ing laku. Kode Jawa kanggo nduduhake loop sing dijenengi
public class NamedLoop {
    public static void main(String[] args) {
        loop1:
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i == 3)
                    break loop1;
                System.out.println("i = " + i + " j = " + j);
            }
        }
    }
}
Mangkene apa sing bakal dadi output yen sampeyan mbukak program:
i = 0 j = 0
i = 0 j = 1
i = 0 j = 2
i = 0 j = 3
i = 0 j = 4
i = 1 j = 0
i = 1 j = 1
i = 1 j = 2
i = 1 j = 3
i = 1 j = 4
i = 2 j = 0
i = 2 j = 1
i = 2 j = 2
i = 2 j = 3
i = 2 j = 4
Sampeyan uga bisa nggunakake tembung kunci terus bali menyang wiwitan daur ulang sing dijenengi. Lan yen perlu, sampeyan bisa nggunakake break(utawa continue) ing nested if-elsekaro fordaur ulang kanggo break munggah sawetara puteran nggunakake if-else. Iki bakal mbantu supaya ora nggawe akeh gendera lan mriksa ing pratelan if-elsekanggo nemtokake manawa arep nerusake utawa metu saka daur ulang.

Tugas 4: Temokake duplikat siji ing array integer

Sampeyan diwenehi array integer (utawa ArrayList, yen sampeyan seneng) sing ngemot saben Integersaka 1 kanggo 100. Uploaded wis siji, lan mung siji, duplikat unsur. Kepiye carane sampeyan nemokake? Iku luwih umum kanggo programmer Jawa kanggo njaluk jinis iki tugas saka telung sadurungé. Amarga babagan logika tinimbang kawruh babagan subtleties basa sing jarang digunakake. Impuls unbridled pisanan kanggo nggunakake brute force bakal pass rodo cepet nalika otak nendhang utawa sampeyan éling "Aku programmer. Aku pinter." Masalah mung nalika wawancara, nalika sampeyan lagi stres, iki bisa uga ora kedadeyan. Dadi mikir saiki sadurunge ndeleng solusi!

Punika algoritma

Etung jumlah kabeh nomer saka 1 kanggo 100. Kita mikir sampeyan ngerti carane sampeyan bisa nindakake iki (Contone, nggunakake cara misuwur Gauss). Saiki etung jumlah unsur ing array utawa ArrayList. Lan ... nyuda jumlah pisanan saka nomer loro. Bingo! Nomer sing diasilake yaiku nilai unsur duplikat. Kode Jawa kanggo tugas iki nggunakake ArrayList.
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class FindDuplicate {
    private static void findDuplicate(List<Integer> elements) {

        int distinctSum = elements.stream().distinct().mapToInt(e -> e).sum();
// Find the sum of all list elements
        int totalSum = elements.stream().mapToInt(e -> e).sum();
        System.out.println("The repeated element is: " + (totalSum - distinctSum));
    }

    public static void main(String[] args) {
// Create a list of sequential elements in the interval [1..101).
        List <Integer> elements = IntStream.range(1, 101).boxed().collect(Collectors.toList());
// Add the value 23 at index 53
        elements.set(53, 23);
        findDuplicate(elements);
    }
}

Solusi liyane

import java.util.List;
import java.util.ArrayList;

public class Duplicate {

    public int findDuplicateNumber(List<Integer> numbers) {

        int highestNumber = numbers.size() - 1;
        int total = getSum(numbers);
        int duplicate = total - (highestNumber * (highestNumber + 1) / 2);
        return duplicate;
    }

    public int getSum(List<Integer> numbers) {

        int sum = 0;
        for (int num : numbers) {
            sum = sum + num;
        }
        return sum;
    }

    public static void main(String a[]) {
        List <Integer> numbers = new ArrayList <Integer>();
        for (int i = 1; i < 100; i++) {
            numbers.add(i);
        }
        // Add a duplicate to the list
        numbers.add(25);
        Duplicate dn = new Duplicate();
        System.out.println("The repeated element is: " + dn.findDuplicateNumber(numbers));
    }
}

Tugas 5: Temokake duplikat sing ora unik ing array integer

Yen tugas sadurunge gampang banget kanggo sampeyan, coba tindakake iki: Sampeyan diwenehi dhaptar integer saka 1 nganti 100. Ana duplikat (luwih saka siji). Kepiye carane nemokake unsur sing kedadeyan luwih saka sepisan (goleki unsur kasebut lan tuduhake kaping pirang-pirang kedadeyan)?

Solusi

Ing kene solusi logis yaiku nggunakake kaya HashMap, amarga nyimpen data ing pasangan kunci-nilai. Kode kanggo tugas iki ing Jawa:
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class SomeDuplicates {
    private static void findDuplicates(List<Integer> elements) {
        HashMap <Integer, Integer> duplicates = new HashMap <>();
// Use the following rule to populate the Map duplicates:
// the key is the element value, and the value is the number of times it occurs
        elements.forEach(e -> duplicates.put(e, duplicates.get(e) == null ? 1 : duplicates.get(e) + 1));
// Remove any elements that don't occur more than once from the Map duplicates
// and store the result as a list (to make it easy to work with in the next step)
        List <Map.Entry <Integer, Integer> >
        result = duplicates.entrySet().stream().filter(d -> d.getValue() > 1).collect(Collectors.toList());
// Write the results for all elements to the result list
        result.forEach(e -> System.out.println(String.format("Element %d  occurs %d times", e.getKey(), e.getValue())));
    }

    public static void main(String[] args) {
        List <Integer> elements = IntStream.range(1, 101).boxed().collect(Collectors.toList());
        elements.set(97, 23);
        elements.set(27, 51);
        elements.set(99, 23);
        findDuplicates(elements);
    }
}

Kesimpulan

Ana macem-macem jinis tugas Jawa praktis, lan sampeyan ora ngerti teka-teki apa sing bakal dijaluk sing diwawancarai. Nanging, majikan sing wicaksana ngerti manawa kemampuan sampeyan kanggo ngrampungake tugas praktis sing nyata , kaya sing bakal sampeyan temoni ing pakaryan, luwih penting tinimbang kemampuan sampeyan kanggo ngatasi pitakonan trick. Supaya nindakake iki sabisa-bisa. Pramila kita nggawe CodeGym. Materi saka geeksforgeeks digunakake kanggo nggawe artikel iki.
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar