Top 8 ważnych pytań i odpowiedzi na wywiad dotyczący kodowania 2022 [Dla nowicjuszy i doświadczonych]

Opublikowany: 2021-08-25

Dobre podstawy struktur danych, takich jak tablice, drzewa binarne, tablice mieszające i listy połączone, są niezbędne. Musisz być świadomy podstawowych algorytmów, metod i mieć dobrą kontrolę nad językami programowania, takimi jak Java, zwłaszcza jeśli ubiegasz się o pracę programistyczną. Na pewno możesz nauczyć się odpowiedzi na ważne pytania podczas rozmowy kwalifikacyjnej, ale wysoce zalecane jest samodzielne ćwiczenie rozwiązań.

8 najlepszych pytań do rozmowy kwalifikacyjnej na temat kodowania i ich odpowiedzi

Przyjrzyjmy się niektórym z najważniejszych pytań dotyczących kodowania, które są zadawane podczas wywiadów prowadzonych przez ogromne firmy, takie jak Microsoft, IBM, Google itp.

1. Jak znaleźć pierwszy niepowtarzalny znak w słowie?

Aby odpowiedzieć na to pytanie, musisz najpierw zrozumieć, co należy zrobić, aby promować tę funkcję. Należy napisać funkcję, która akceptuje ciągi i zwraca pierwsze niepowtarzające się znaki.

Na przykład w słowie „przejście” „p” jest pierwszym niepowtarzanym znakiem, a w słowie „żółw” „u” jest pierwszym niepowtarzanym znakiem. Jak więc rozwiązać ten problem? Możemy stworzyć tabelę do przechowywania powtórzeń dla wszystkich znaków, a następnie wybrać pierwsze wpisy, które się nie powtarzają.

Aby napisać kod, który zwróci pierwsze niepowtarzające się litery, możemy użyć LinkedHashMap do przechowywania liczby znaków. Ta HashMap jest zgodna z kolejnością wstawiania, a znaki są inicjowane w tej samej pozycji, co w ciągu. Zeskanowany ciąg musi zostać poddany iteracji za pomocą LinkedHashMap, aby wybrać wymagany wpis o wartości 1.

Innym sposobem podejścia do tego problemu jest użycie firstNonRepeatingChar(String word). Pozwala to na zidentyfikowanie w jednym przejściu znaku, który pojawia się jako pierwszy. W tym podejściu do zastąpienia interakcji używano dwóch pamięci. Ta metoda przechowuje znaki niepowtarzające się i powtarzające się oddzielnie, a po zakończeniu iteracji wymagany znak jest pierwszym elementem na liście.

2. Jak usunąć duplikaty z tablic?

Najpierw musisz użyć LinkedHashSet (interfejsu zestawu), aby zachować oryginalną kolejność wstawiania elementów do zestawu. Musisz użyć pętli lub funkcji rekurencji, aby rozwiązać tego rodzaju pytania dotyczące kodowania podczas rozmowy kwalifikacyjnej.

Głównym czynnikiem, o którym musimy pamiętać, gdy mamy do czynienia z tablicami, nie są elementy, które mają duplikaty. Głównym problemem jest tutaj usunięcie duplikatów. Tablice to statyczne struktury danych, które mają stałą długość, dlatego nie można ich zmienić. Tak więc, aby usunąć elementy z tablic, musisz utworzyć nowe tablice i zduplikować zawartość do tych nowych tablic.

Najpierw musisz przekonwertować tablice na Arraylists, a następnie utworzyć LinkedHashSets z tych ArrayLists. Jeśli tablice wejściowe zawierają większą liczbę duplikatów, może to spowodować powstanie wielu tablic tymczasowych, zwiększając w ten sposób koszt importu zawartości. To ograniczenie wymusza podejście do tego problemu w sposób, który wymaga mniejszej ilości pamięci i mocy obliczeniowej.

Musimy usunąć duplikaty, ale nie kopiować ich do wynikowych tablic, w ten sposób nie usuwając całkowicie duplikatów, ale po prostu zastępując je 0 jako wartością domyślną.

3. Jak sprawdzić, czy liczba jest liczbą pierwszą?

Jest to jedno z najczęstszych pytań dotyczących kodowania podczas rozmowy kwalifikacyjnej, które polega na ustaleniu, czy podana liczba jest liczbą pierwszą, czy nie. Tego rodzaju programy są podstawą myślenia algorytmicznego, ponieważ musimy znaleźć rozwiązania, które opierają się na fakcie, że wszystkie liczby pierwsze są liczbami naturalnymi, których nie można podzielić przez liczby dodatnie inne niż 1.

Musimy napisać kod, aby utworzyć pętle, które sprawdzają każdą liczbę od 1 do liczby docelowej, aby sprawdzić, czy liczba docelowa jest podzielna przez inną liczbę dodatnią inną niż ona sama lub 1.

Ta funkcja doprowadzi nas do rozwiązania. Sprawdzając liczbę, która jest szczególnie duża, możemy po prostu sprawdzić pierwiastek kwadratowy z N, gdzie N jest liczbą docelową. Nie ma potrzeby sprawdzania do N w przypadku kwalifikującego się pierwiastka kwadratowego.

Jeżeli liczba nie jest podzielna przez 2, nie ma potrzeby sprawdzania, czy jest podzielna przez inne liczby parzyste, co skraca czas potrzebny na znalezienie rozwiązania. Jest to zoptymalizowana wersja rozwiązania, w której przydaje się analiza liczby przed napisaniem rozwiązania.

4. Jak sprawdzić, czy ciągi zawierają tylko cyfry?

Jeśli chcesz pisać wyrażenia regularne do sprawdzania, czy łańcuchy są tylko liczbami lub czy zawierają znaki niebędące cyframi, musisz najpierw nauczyć się używać zestawów znaków w wyrażeniach regularnych Javy. Języki programowania, takie jak Java, obsługują wyrażenia regularne za pomocą klasy java.util.regex.Matcher i java.util.regex.Pattern. Java.util.regex to dedykowany pakiet do tego celu.

Aby zweryfikować istnienie tylko liczb za pomocą wyrażeń regularnych, możemy użyć kodu do analizy, czy łańcuchy zawierają surową liczbę całkowitą. Sprawdzimy, czy ciąg zawiera tylko cyfry z zakresu od 0 do 9. Nawet jeśli ciąg zawiera cyfry, ale także inne znaki, nie jest to prosty ciąg liczbowy. Wyrażenia regularne sprawdzają tylko liczby całkowite i nie uwzględniają znaków kropki (.), co powoduje, że liczby dziesiętne i zmiennoprzecinkowe nie przechodzą testu.

5. Jak możesz odwrócić słowa w zdaniu docelowym bez pomocy metod bibliotecznych?

Jest to również jedno z bardzo częstych pytań na temat kodowania podczas rozmowy kwalifikacyjnej. Po pierwsze, musimy zrozumieć wymaganie i jak wypełnić lukę w tym wymaganiu. W obliczu takich pytań musimy najpierw skoncentrować się na zadawaniu właściwych pytań. Łańcuchy to nic innego jak zdania o określonych znakach, które mogą zawierać jedno słowo lub wiele słów.

Zdanie może być również puste. Na przykład, jeśli otrzymamy zdanie „Programowanie jest zabawne”, musimy je odwrócić do „Zabawa to programowanie”. efektywnie. Musimy użyć wyrażeń regularnych w Javie, aby podzielić podane ciągi na spacje, a następnie zastosować metodę reverse() z klasy narzędziowej Collections.

Gdy będziesz w stanie podzielić ciągi za pomocą wyrażeń regularnych'\\s', w wyniku zostanie zwrócona tablica słów. To również zajmuje się słowami oddzielonymi wieloma spacjami. Gdy tylko tablica zostanie zwrócona, możesz utworzyć ArrayLists z tych tablic, a następnie użyć metody Collections.reverse(). To odwraca ArrayLists, a każde słowo zostanie ponownie zainicjowane w odwrotnej kolejności.

Teraz wszystko, co pozostało, to użycie StringBuilder do łączenia wielu ciągów za pomocą iteracji ArrayList. Należy upewnić się, że rozmiar jest określony, ponieważ zmiana rozmiaru StringBuilder jest procesem kosztownym pod względem mocy obliczeniowej i pamięci. Zmiana rozmiaru kończy się utworzeniem nowych tablic poprzez skopiowanie zawartości ze starszych tablic.

6. Jak zamienić lub usunąć znaki z ciągów?

Załóżmy, że mamy ciąg „Woocommerce” i chcemy zastąpić literę „r” literą „n”, istnieje wiele metod, aby to osiągnąć. Klasy ciągów w Javie zapewniają wiele podejść do zastępowania znaków wewnątrz ciągów za pomocą CharSequence i podciągów.

Możesz łatwo wywołać metodę replace wewnątrz ciągu, co spowoduje zastąpienie znaku docelowego i zwrócenie w rezultacie żądanego znaku. Ciągi znaków są niezmienne w językach programowania, takich jak Java.

Dlatego za każdym razem, gdy te operacje, takie jak usuwanie lub zastępowanie, są wykonywane na ciągach, domyślnie generowane są nowe obiekty ciągów. Istnieją 4 przeładowane metody zastępowania ciągów za pomocą Javy:

  • replace(znak staryChar, znak nowyChar)
  • replaceAll(String regex, String Replacement)
  • replace(cel CharSequence, zamiana CharSequence)
  • replaceFirst(String regex, String Replacement)

CharSequence jest jednym z super interfejsów dla łańcuchów, StringBuilder i StringBuffer, pozwalającym nam przekazać dowolny z obiektów z nich jako argumenty dla tej metody zastępczej. replaceAll() kończy zastąpienie każdego dopasowania łańcuchami zastępczymi, podczas gdy replaceFirst() zastępuje tylko pierwsze dopasowania.

Podsumowując, wszystkie te metody są potężnymi metodologiami, które akceptują wyrażenia regularne. Klasa Java.lang.String pozwala na wszystkie te przeciążone metody, które mogą łatwo zastąpić pojedyncze znaki lub podciągi w Javie.

Zdecydowanie zaleca się użycie replaceAll(), ponieważ zastępuje to każde wystąpienie pasujących znaków. Podążanie za tym podejściem pozwala nam oczekiwać wzorców wyrażeń regularnych, zyskując w ten sposób większą moc. Ta metoda może również zastąpić każdy przecinek potokami w celu konwersji plików oddzielonych przecinkami na ciągi rozdzielane stosami.

Jednakże, jeśli ktoś chce zastąpić tylko jeden znak, może po prostu użyć metody replace(), która bierze pod uwagę stary i nowy dany znak.

Przeczytaj: Pytania i odpowiedzi dotyczące rozmowy kwalifikacyjnej w języku Java

7. Jak można dołączać teksty do plików w językach programowania, takich jak Java?

Dołączanie jest zupełnie inne niż tworzenie nowych plików i zapisywanie danych do nowych plików. W przypadku dołączania pliki już istnieją i musimy po prostu dodać tekst na końcu pliku. Jest to podobne do plików dziennika, ponieważ są one stale aktualizowane w systemie.

Pliki dziennika są doskonałym przykładem dołączania tekstu, ponieważ aplikacje iteracyjnie dołączają do tych plików szczegóły dziennika. Struktury rejestrowania nie są wymagane w przypadku tego problemu, ale musisz wiedzieć, jak dołączyć tekst do istniejących plików. Aby rozwiązać ten problem, musisz być świadomy klas wygodnych do pisania plików znakowych.

Klasa ma konstruktory, które zakładają akceptowalność domyślnego bufora bajtów i kodowania znaków. Jeśli chcesz samodzielnie określić wartości, możesz po prostu skonstruować OutputStreamWriter za pomocą FileOutputStream. Dostępność plików zależy od bazowych platform, które określają, czy plik może zostać utworzony, czy nie.

Kilka platform umożliwia inicjalizację plików w celu zapisania funkcji przy użyciu pojedynczego obiektu FileWrite lub wielu obiektów do zapisu plików. Jednak konstruktory z tej klasy będą kończyć się niepowodzeniem, gdy zaangażowany plik zostanie już zainicjowany. FileWriter służy do zapisywania strumieni znaków, a FileOutputStream może zapisywać strumienie nieprzetworzonych bajtów.

Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

8. Jak znaleźć największą lub najmniejszą liczbę w tablicy liczb całkowitych?

W tym rozwiązaniu musimy zakodować funkcję lub metodę, która może znaleźć największą lub najmniejszą liczbę z tablic będących pełnoprawnymi liczbami całkowitymi. Najpierw musimy utworzyć plik źródłowy w Javie o nazwie MaximumMinimumArrayDemo.java i skopiować napisany tutaj kod w celu kompilacji i wykonania.

Możemy użyć dwóch zmiennych, które możemy nazwać „największą” i „najmniejszą”, aby przechowywać odpowiednio wartości maksymalne i minimalne z tablic. Najmniejszą liczbę można zainicjować za pomocą integer.MIN_VALUE, a największą za pomocą integer.MAX_VALUE.

Przy każdej zainicjowanej przez Ciebie iteracji pętli możesz porównywać bieżące liczby z „największymi” i „najmniejszymi” i odpowiednio je aktualizować. Tablice nie przesłaniają metody toString w Javie, więc możesz użyć Arrays.toString() do drukowania zawartości tablic docelowych.

Możesz użyć tej statycznej metody, aby bezpośrednio wywołać funkcję main. Następnie musisz przekazać losowe tablice za pomocą tej metody, aby sprawdzić, czy wartości maksymalne i minimalne zostały zwrócone dokładnie. Możesz także zautomatyzować to testowanie za pomocą testów jednostkowych w swoim środowisku IDE.

Kasa: 4 najlepsze umiejętności obsługi komputera, które możesz wykorzystać w swoim CV

Wniosek

Kursy skoncentrowane na programowaniu nie tylko świetnie nadają się do rozwiązywania problemów, ale dodatkowo zwiększają Twoje szanse na wybór przy ubieganiu się o pracę. Jeśli chcesz dowiedzieć się więcej o programowaniu w języku Java i bardziej zaawansowanych problemach z kodowaniem, możesz zapisać się na kompleksowy kurs, taki jak magisterium z informatyki lub kurs Full Stack Development Course .

Zostań programistą Full Stack

Złóż wniosek o certyfikację PG związaną z pracą w inżynierii oprogramowania