JavaRush /Blog Jawa /Random-JV /Ngopi #92. 20 Pitakon Wawancara Basa Jawa

Ngopi #92. 20 Pitakon Wawancara Basa Jawa

Diterbitake ing grup
Source: Dev.to Hello fellow pangembang, Aku wis nyawiji dhaftar pitakonan wawancara dhasar Jawa sing saben coder kudu ngerti.

1. Carane mbalikke senar ing Jawa tanpa nggunakake mbalikke () cara?

Wangsulan: Ora ana cara mbalikke () standar ing Jawa , sanajan cara mbalikke () ana ing sawetara perpustakaan kayata StringBuffer utawa StringBuilder . Mulane, pitakonan babagan pembalikan array asring banget ing wawancara. Ing ngisor iki ana algoritma prasaja sing bisa digunakake kanggo mbalikke array.
public class StringReverse {

    public static void main(String[] args) {

        String str = "Flexiple";
        System.out.println(reverse(str));
    }

    public static String reverse(String in) {
        if (in == null)
            throw new IllegalArgumentException("Null is not valid");

        StringBuilder out = new StringBuilder();

        char[] chars = in.toCharArray();

        for (int i = chars.length - 1; i >= 0; i--)
            out.append(chars[i]);

        return out.toString();
    }
}

2. Tulis snippet kode kanggo ngleksanakake urutan Fibonacci nggunakake recursion

Jawaban: Potongan kode ing ngisor iki ngetrapake urutan Fibonacci kanthi nggunakake rekursi. Pitakonan iki uga umum banget ing wawancara basa Jawa.
public class FibonacciNumbers {
    public static int fibonacci(int n) {
        if (n <= 1)
            return n;
        return fibonacci(n - 1) + fibonacci(n - 2);
    }


    public static void main(String args[]) {
        int n = 10;
        System.out.println(fibonacci(n));
    }
}

3. Kepiye carane mbusak spasi saka senar ing Jawa?

Jawaban: Strip () cara iku cara senar sing mbusak kabeh spasi anjog lan mburine. Strip () nggunakake cara Character.isWhitespace () internal kanggo mriksa spasi putih. Ndeteksi spasi nggunakake karakter Unicodes lan minangka cara sing disaranake kanggo mbusak spasi. Cara alternatif stripLeading () lan stripTrailing () uga bisa digunakake . Dheweke bakal nulungi yen sampeyan pengin mbusak mung papan ngarep utawa mburi. Kode ing ngisor iki minangka conto nggunakake cara strip () .
String s = "  flexiple ";

s = s.strip();

System.out.println(s);

4. Apa sing nyebabake skenario deadlock? Tulis kode kanggo nggawe deadlock

Wangsulan: Skenario deadlock dumadi nalika rong utas mbutuhake kunci sing padha kanggo dieksekusi. Skenario kasebut kedadeyan nalika benang loro wis entuk kunci siji lan ngenteni kunci liyane. Nanging, amarga loro-lorone thread nunggu sing liyane kanggo eksekusi, padha mblokir saben liyane, nyebabake deadlock. Program multithreaded ngalami deadlock amarga tembung kunci sing disinkronake digunakake kanggo nggawe metode thread aman. Iki tegese mung siji utas sing bisa mblokir lan nggunakake cara sing disinkronake. Utas liyane kudu ngenteni thread saiki rampung. Kode ing ngisor iki nggawe rong utas sing buntu.
class Util
{
    static void sleep(long millis)
    {
        try
        {
            Thread.sleep(millis);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
    }
}
class Shared
{
    synchronized void test1(Shared s2)
    {
        System.out.println("test1-begin");
        Util.sleep(1000);

        s2.test2();
        System.out.println("test1-end");
    }

    synchronized void test2()
    {
        System.out.println("test2-begin");
        Util.sleep(1000);

        System.out.println("test2-end");
    }
}

class Thread1 extends Thread
{
    private Shared s1;
    private Shared s2;

    public Thread1(Shared s1, Shared s2)
    {
        this.s1 = s1;
        this.s2 = s2;
    }

    @Override
    public void run()
    {
        s1.test1(s2);
    }
}

class Thread2 extends Thread
{
    private Shared s1;
    private Shared s2;

    public Thread2(Shared s1, Shared s2)
    {
        this.s1 = s1;
        this.s2 = s2;
    }

    @Override
    public void run()
    {
        s2.test2(s1);
    }
}

public class Deadlock
{
    public static void main(String[] args)
    {
        Shared s1 = new Shared();

        Shared s2 = new Shared();

        Thread1 t1 = new Thread1(s1, s2);
        t1.start();

        Thread2 t2 = new Thread2(s1, s2);
        t2.start();

        Util.sleep(2000);
    }
}

5. Tulis Kode Jawa kanggo Print Tanggal ing Format Tertentu

Jawaban: Kelas SimpleDateFormat mbantu ngowahi tanggal saka format siji menyang format liyane. Cara iki uga ngidini pangguna nggunakake format string tanggal lan ngganti menyang format sing dikarepake. Kode ing ngisor iki ngowahi tanggal dadi format standar: DD/MM/YYYY
import java.text.SimpleDateFormat;
import java.util.Date;
public class CurrentDateTimeExample2 {
public static void main(String[] args) {
    SimpleDateFormat formatter = new SimpleDateFormat("DD/MM/YYYY HH:mm:ss");
    Date date = new Date();
    System.out.println(formatter.format(date));
}
}
Cuplikan kode kanggo ngowahi tanggal dadi MM/DD/YYYY:
import java.text.SimpleDateFormat;
import java.util.Date;
public class CurrentDateTimeExample2 {
public static void main(String[] args) {
    SimpleDateFormat formatter = new SimpleDateFormat("MM/DD/YYYY HH:mm:ss");
    Date date = new Date();
    System.out.println(formatter.format(date));
}
}

6. Kepiye cara ngurutake HashMap miturut nilai?

Wangsulan: HashMaps digunakake kanggo ngleksanakake antarmuka peta. Padha ngidini pangguna kanggo nyimpen pasangan kunci-nilai, nanging tombol kudu unik. HashMaps ora diurutake koleksi lan ngurutake ora ana gunane, nanging amarga ngurutake peta hash bisa angel banget, mula dadi pitakonan umum ing wawancara Jawa. Kode ing ngisor iki nuduhake implementasine HashMaps .
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class SortHashMap {

    public static void main(String[] args) {
        Map scores = new HashMap<>();

        scores.put("John", 6);
        scores.put("Carol", 8);
        scores.put("Martin", 9);
        scores.put("Mona", 7);
        scores.put("Eric", 5);

        System.out.println(scores);

        scores = sortByValue(scores);

        System.out.println(scores);

    }

    private static Map sortByValue(Map scores) {
        Map sorted = new LinkedHashMap<>();

        Set> entrySet = scores.entrySet();
        System.out.println(entrySet);

        List> entryList = new ArrayList<>(entrySet);
        System.out.println(entryList);

        entryList.sort((x, y) -> x.getValue().compareTo(y.getValue()));
        System.out.println(entryList);

        for (Entry e : entryList)
            sorted.put(e.getKey(), e.getValue());

        return sorted;
    }

}

7. Apa cara forEach ()? Terangna nganggo tuladha

Wangsulan: forEach () minangka cara sing digunakake kanggo ngulang obyek ing Jawa. Nanging ora kaya puteran liyane, ing kene counter loop ora diumumake utawa diinisialisasi, nanging variabel kasebut diterusake minangka iterable. Mulane, forEach () biasane digunakake karo susunan utawa kelas koleksi. Sintaksis:
for (type var : array)
{
    statements using var;
}
Conto nggunakake forEach() :
class ExampleForEach
{
    public static void main(String[] arg)
    {
        {
            int[] scores = { 10, 13, 9, 11, 11};

            int highest_score = maximum(scores);
            System.out.println(highest_scores);
        }
    }
    public static int maximum(int[] numbers)
    {
        int max = numbers[0];

        // for each loop
        for (int n : numbers)
        {
            if (n > max)
            {
                max = n;
            }
        }
    return max;
    }
}

8. Apa antarmuka fungsional lan kepiye carane digawe?

Wangsulan: Antarmuka sing mung ngemot siji metode abstrak diarani antarmuka fungsional. Sabanjure, antarmuka fungsional mung bisa duwe siji fungsi, nanging bisa ngemot macem-macem cara standar. Ing Jawa 8, ekspresi lambda bisa digunakake kanggo instantiate antarmuka fungsional, nggawe samubarang luwih gampang. Conto antarmuka fungsional: ActionListener , Comparable . Punika kode sing digunakake kanggo nemtokake antarmuka fungsional.
@FunctionalInterface
interface Foo {
    void test();
}

9. Njlèntrèhaké Overloading karo conto

Wangsulan: Overloading yaiku proses ngrampungake macem-macem cara kanthi jeneng sing padha nanging beda-beda gumantung saka tandha tangan, jinis data utawa jumlah paramèter. Overloading ngidini pangguna kanggo nggunakake maneh cara siji tinimbang nggawe lan ngelingi sawetara cara. Ing cendhak, overloading ana hubungane karo polimorfisme wektu kompilasi. Contoh kode overload metode:
public class Sum {

    public int sum(int x, int y)
    {
        return (x + y);
    }

    public int sum(int x, int y, int z)
    {
        return (x + y + z);
    }

    public double sum(double x, double y)
    {
        return (x + y);
    }

    public static void main(String args[])
    {
        Sum s = new Sum();
        System.out.println(s.sum(10, 20));
        System.out.println(s.sum(10, 20, 30));
        System.out.println(s.sum(10.5, 20.5));
    }
}

10. Njlentrehake Overriding nganggo tuladha

Wangsulan: Overriding minangka fitur ing Jawa sing ngidini subclass utawa kelas anak nyedhiyakake implementasine sing kapisah kanggo metode sing ana ing kelas induk. Nalika metode ing subkelas nduweni jeneng, parameter, lan jinis bali sing padha karo kelas induk, metode kasebut bakal ngilangi metode ing kelas induk. Lan versi metode sing diarani nemtokake cara sing bakal ditindakake. Overriding minangka cara kanggo entuk polimorfisme nalika runtime. Tuladha kode override metode:
class Parent {
    void show()
    {
        System.out.println("Parent's show()");
    }
}

class Child extends Parent {
    @Override
    void show()
    {
        System.out.println("Child's show()");
    }
}

class Main {
    public static void main(String[] args)
    {
        Parent obj1 = new Parent();
        obj1.show();

        Parent obj2 = new Child();
        obj2.show();
    }
}

11. Apa telusuran binar? Kepiye cara iki ditindakake?

Wangsulan: Algoritma telusuran binar digunakake kanggo nemokake nilai ing array sing diurutake utawa jinis koleksi. Cara telusuran iki luwih cepet tinimbang metode telusuran linear. Panelusuran binar ngilangi array dadi set sing luwih cilik lan banjur ngetrapake aturan kanggo mriksa kunci input. Tahap ngleksanakake panelusuran biner (biner):
  • Urut array ing urutan munggah.
  • Temokake nilai rata-rata array lan mbandhingake karo tombol.
  • Yen tombol padha karo rata-rata, bali bener.
  • Yen salah, priksa manawa kunci luwih gedhe utawa kurang saka nilai rata-rata.
  • Sabanjure, adhedhasar asil, mriksa tombol ing sisih ndhuwur utawa ngisor, mungguh.
  • Iterate lan mbandhingake saben nilai karo tombol.
Cuplikan kode sing ngetrapake telusuran binar:
import java.util.Scanner;

public class BinarySearch {

    public static void main(String[] args) {

        Scanner commandReader = new Scanner(System.in);
        System.out.println("Enter total number of elements : ");
        int length = commandReader.nextInt();
        int[] input = new int[length];

        System.out.printf("Enter %d integers %n", length);
        for (int i = 0; i < length; i++) {
            input[i] = commandReader.nextInt();
        }

        System.out.println("Please enter number to be searched in array
                                    (sorted order)");
        int key = commandReader.nextInt();

        int index = performBinarySearch(input, key);

        if (index == -1) {
            System.out.printf("Sorry, %d is not found in array %n", key);
        } else {
            System.out.printf("%d is found in array at index %d %n", key,
                                                         index);
        }

        commandReader.close();

    }


    public static int performBinarySearch(int[] input, int number) {
        int low = 0;
        int high = input.length - 1;

        while (high >= low) {
            int middle = (low + high) / 2;
            if (input[middle] == number) {
                return middle;
            } else if (input[middle] < number) {
                low = middle + 1;
            } else if (input[middle] > number) {
                high = middle - 1;
            }
        }
        return -1;
    }

}

12. Apa cara sing paling apik kanggo nyegah deadlock ing basa Jawa?

Wangsulan:
  • Kunci Nesting: Panyebab utama deadlock yaiku nalika kunci diterusake menyang pirang-pirang benang. Nyingkiri mblokir pirang-pirang utas yen ana benang sing wis ana blok bisa mbantu nyegah deadlock.
  • Nggunakake Thread.join () : Deadlocks uga bisa dumadi nalika thread nunggu sumber saka thread liyane. Nanging, ing kasus kaya mengkono, Thread.join () bisa digunakake karo wektu eksekusi maksimum.
  • Nggunakake kunci mung yen perlu: Laku nggunakake kunci mung ing unsur yen perlu. Kunci sing ora perlu minangka panyebab utama deadlock.

13. Tulis kode kanggo ngleksanakake LRU caching ing Jawa

Jawaban: LRU singkatan saka Least Used Cache. Skema caching LRU digunakake kanggo mbusak cache sing pungkasan digunakake. Proses iki kedadeyan nalika cache sing ana wis kebak lan kaca anyar sing dirujuk ora ana ing cache sing ana. Kode ing ngisor iki nuduhake implementasine:
import java.util.Deque;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Iterator;

public class LRUCache {

    private Deque doublyQueue;

    private HashSet hashSet;

    private final int CACHE_SIZE;

    LRUCache(int capacity) {
        doublyQueue = new LinkedList<>();
        hashSet = new HashSet<>();
        CACHE_SIZE = capacity;
    }

    public void refer(int page) {
        if (!hashSet.contains(page)) {
            if (doublyQueue.size() == CACHE_SIZE) {
                int last = doublyQueue.removeLast();
                hashSet.remove(last);
            }
        }
        else {/* The found page may not be always the last element, even if it's an
            intermediate element that needs to be removed and added to the start
            of the Queue */
            doublyQueue.remove(page);
        }
        doublyQueue.push(page);
        hashSet.add(page);
    }

    public void display() {
        Iterator itr = doublyQueue.iterator();
        while (itr.hasNext()) {
            System.out.print(itr.next() + " ");
        }
    }

    public static void main(String[] args) {
        LRUCache cache = new LRUCache(4);
        cache.refer(1);
        cache.refer(2);
        cache.refer(3);
        cache.refer(1);
        cache.refer(4);
        cache.refer(5);
        cache.refer(2);
        cache.refer(2);
        cache.refer(1);
        cache.display();
    }
}

14. Kadospundi urutanipun dipunputer gumantung ing posisi K, contone k = 2?

Wangsulan: Bab ingkang sapisanan kode muter (bali) array gumantung ing posisi kasebut. Sanajan katon prasaja, iki nguji pangerten babagan puteran lan susunan lan mula dadi pitakonan umum ing wawancara Jawa.
public static int[] rotateBruteForce(int[] nums, int k) {
 for (int i = 0; i < k; i++) {
 for (int j = nums.length - 1; j > 0; j--) {
 // move each number by 1 place
 int temp = nums[j];
 nums[j] = nums[j - 1];
 nums[j - 1] = temp;
 }
 System.out.println("Array rotation after "+(i+1)+" step");
 printArray(nums);
 System.out.println();
 }
 return nums;
 }

15. Apa sing diarani Antrian ing basa Jawa? Ngleksanakake nggunakake arrays.

Wangsulan: Antrian minangka struktur linier sing nduduhake urutan operasi kanthi cara sing luwih dhisik. Jawa nyedhiyakake implementasi sing luwih gampang kanggo jinis data abstrak kayata antrian, tumpukan, lan liya-liyane. Nanging, ngleksanakake nggunakake array minangka pitakonan sing nguji pemahaman sampeyan babagan konsep kasebut. Elinga yen implementasine array saka antrian ora dinamis.
package org.arpit.java2blog;

public class QueueUsingArrayMain {

    private int capacity;
    int queueArr[];
    int front;
    int rear;
    int currentSize = 0;

    public QueueUsingArrayMain(int sizeOfQueue) {
        this.capacity = sizeOfQueue;
        front = 0;
        rear = -1;
        queueArr = new int[this.capacity];
    }

16. Apa HeapSort? Tulis kode kanggo ngleksanakake

Wangsulan: HeapSort minangka cara ngurutake adhedhasar struktur data tumpukan biner. Tumpukan biner minangka wit binar ing ngendi unsur disimpen kanthi cara sing nilai-nilai ing simpul induk luwih gedhe (max-heap) utawa kurang (min-heap) tinimbang nilai ing simpul anak. Kode kanggo ngleksanakake HeapSort katon kaya iki:
public class HeapSort {
    public void sort(int arr[])
    {
        int n = arr.length;

        // Build heap (rearrange array)
        for (int i = n / 2 - 1; i >= 0; i--)
            heapify(arr, n, i);

        // One by one extract an element from heap
        for (int i = n - 1; i > 0; i--) {
            // Move current root to end
            int temp = arr[0];
            arr[0] = arr[i];
            arr[i] = temp;

            // call max heapify on the reduced heap
            heapify(arr, i, 0);
        }
    }

    // To heapify a subtree rooted with node i which is
    // an index in arr[]. n is size of heap
    void heapify(int arr[], int n, int i)
    {
        int largest = i; // Initialize largest as root
        int l = 2 * i + 1; // left = 2*i + 1
        int r = 2 * i + 2; // right = 2*i + 2

        // If left child is larger than root
        if (l < n && arr[l] > arr[largest])
            largest = l;

        // If right child is larger than largest so far
        if (r < n && arr[r] > arr[largest])
            largest = r;

        // If largest is not root
        if (largest != i) {
            int swap = arr[i];
            arr[i] = arr[largest];
            arr[largest] = swap;

            // Recursively heapify the affected sub-tree
            heapify(arr, n, largest);
        }
    }

    /* A utility function to print array of size n */
    static void printArray(int arr[])
    {
        int n = arr.length;
        for (int i = 0; i < n; ++i)
            System.out.print(arr[i] + " ");
        System.out.println();
    }

    // Driver code
    public static void main(String args[])
    {
        int arr[] = { 12, 11, 13, 5, 6, 7 };
        int n = arr.length;

        HeapSort ob = new HeapSort();
        ob.sort(arr);

        System.out.println("Sorted array is");
        printArray(arr);
    }
}

17. Apa iku Memoization?

Jawaban: Memoisasi minangka pendekatan sing mbantu ngatasi masalah sing disebabake pemrograman dinamis. Proses iki mesthekake yen cara tartamtu ora bakal dieksekusi luwih saka sapisan kanggo data input sing padha. Nilai bali disimpen ing tabel hash utawa peta hash lan digunakake maneh yen perlu. Kode ing ngisor iki minangka conto memoisasi ing urutan Fibonacci.
import java.io.*;

class GFG
{

// Fibonacci Series
// using Recursion
static int fib(int n)
{

    // Base case
    if (n <= 1)
        return n;

    // recursive calls
    return fib(n - 1) +
        fib(n - 2);
}

// Driver Code
public static void main (String[] args)
{
    int n = 6;
    System.out.println(fib(n));
}
}

18. Tulis Piece saka kode kanggo ngleksanakake ngurutake gelembung

Jawaban: Kode ing ngisor iki minangka solusi kanggo ngurutake gelembung, sing uga dadi pitakonan umum ing wawancara Jawa.
public class BubbleSortExample {
    static void bubbleSort(int[] arr) {
        int n = arr.length;
        int temp = 0;
         for(int i=0; i < n; i++){
                 for(int j=1; j < (n-i); j++){
                          if(arr[j-1] > arr[j]){
                                 //swap elements
                                 temp = arr[j-1];
                                 arr[j-1] = arr[j];
                                 arr[j] = temp;
                         }
                 }
         }
    }
    public static void main(String[] args) {
                int arr[] ={3,60,35,2,45,320,5};
                System.out.println("Array Before Bubble Sort");
                for(int i=0; i < arr.length; i++){
                        System.out.print(arr[i] + " ");
                }
                System.out.println();
                bubbleSort(arr);//sorting array elements using bubble sort
                System.out.println("Array After Bubble Sort");
                for(int i=0; i < arr.length; i++){
                        System.out.print(arr[i] + " ");
                }

        }
}

19. Apa wae struktur data trie ing basa Jawa?

Wangsulan: A Trie minangka struktur data sing nyimpen data ing struktur wit sing diurutake nggunakake tombol panyimpenan. Posisi simpul ing wit kasebut nemtokake kunci sing digandhengake karo simpul kasebut, lan turunan simpul kasebut nuduhake prefiks sing umum. Thanks kanggo struktur iki, nyoba nawakake kinerja sing luwih apik lan uga njupuk data luwih cepet. Nanging, kekurangan mung kanggo nggunakake kayu yaiku mbutuhake papan panyimpenan luwih akeh.

20. Tulis snippet kode kanggo ngowahi HashMap kanggo ArrayList

Jawaban: Kode ing ngisor iki digunakake kanggo ngowahi HashMap dadi ArrayList .
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
public class Java8MapToListExamples
{
    public static void main(String[] args)
    {
        //Creating a HashMap object

        HashMap studentPerformanceMap = new HashMap();

        //Adding elements to HashMap

        studentPerformanceMap.put("John Kevin", "Average");

        studentPerformanceMap.put("Rakesh Sharma", "Good");

        studentPerformanceMap.put("Prachi D", "Very Good");

        studentPerformanceMap.put("Ivan Jose", "Very Bad");

        studentPerformanceMap.put("Smith Jacob", "Very Good");

        studentPerformanceMap.put("Anjali N", "Bad");

        //Getting Set of keys

        Set keySet = studentPerformanceMap.keySet();

        //Creating an ArrayList of keys

        ArrayList listOfKeys = new ArrayList(keySet);

        System.out.println("ArrayList Of Keys :");

        for (String key : listOfKeys)
        {
            System.out.println(key);
        }

        System.out.println("--------------------------");

        //Getting Collection of values

        Collection values = studentPerformanceMap.values();

        //Creating an ArrayList of values

        ArrayList listOfValues = new ArrayList(values);

        System.out.println("ArrayList Of Values :");

        for (String value : listOfValues)
        {
            System.out.println(value);
        }

        System.out.println("--------------------------");

        //Getting the Set of entries

        Set> entrySet = studentPerformanceMap.entrySet();

        //Creating an ArrayList Of Entry objects

        ArrayList> listOfEntry = new ArrayList>(entrySet);

        System.out.println("ArrayList of Key-Values :");

        for (Entry entry : listOfEntry)
        {
            System.out.println(entry.getKey()+" : "+entry.getValue());
        }
    }
}
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION