50 najważniejszych pytań i odpowiedzi na rozmowę kwalifikacyjną z zakresu programowania
Szukasz najważniejszych pytań i odpowiedzi dotyczących programowania, które pomogą Ci umówić się na rozmowę kwalifikacyjną? Oto 50 najlepszych.

Firmy tworzące oprogramowanie zawsze poszukują dobrych talentów programistycznych, a rozmowy telefoniczne i online często decydują o Twoim losie w ciągu zaledwie kilku minut.
Dobry programista musi być tak wszechstronny, jak to tylko możliwe – od zrozumienia systemów po ogólne programowanie, różne koncepcje i technologie, a także być na bieżąco.
Poniżej znajduje się lista 50 najpopularniejszych pytań do wywiadów programistycznych wraz z odpowiedziami. Rzucają światło na różnorodne koncepcje, które każdy początkujący musi znać, aby osiągnąć sukces.
1. Co to jest programowanie komputerowe?
Programowanie komputerowe to proces kodowania procesów logicznych, które mają być wykonywane przez komputer. Osiąga się to za pomocą języka komputerowego zawierającego niezbędne instrukcje.
Proces można dalej podzielić na projektowanie, kodowanie, debugowanie i aktualizację.
2. Co to jest debugowanie?
Debugowanie to proces odkrywania i eliminowania błędów w źródle oprogramowania programu komputerowego. Można to zrobić na wiele sposobów, ale większość środowisk programistycznych posiada zintegrowany debuger, który ułatwia pracę.
3. Co to jest kompilator?
Kompilator to program, który pobiera napisany program i przekształca go w kod maszynowy zrozumiały dla komputera.
Typowy pakiet kompilatora składa się jednak z preprocesora, głównego kompilatora, który zamienia język komputerowy na kod asemblera, oraz asemblera.
4. Co to jest preprocesor?
Preprocesor to program, który analizuje napisany kod komputerowy w celu znalezienia i spełnienia jego zależności, takich jak potrzebne biblioteki.
Gdy preprocesor upewni się, że wszystko, łącznie ze środowiskiem wykonawczym, jest w porządku, kompilator może następnie przekonwertować kod na kod asemblera.
5. Co to jest asembler?
Asembler to program, który pobiera najniższy poziom czytelnego dla człowieka kodu komputerowego zwanego językiem asemblera i przekształca go w kod maszynowy, z którym może pracować komputer.
Język asemblera jest zwykle generowany przez kompilator, chociaż można go również kodować bezpośrednio. Program asemblera może zawierać kod taki jak:
MOV AH, 02H
ale kiedy skompilujesz go do kodu maszynowego, otrzymasz tylko zera i jedyneki (np. 0110011110101010).
6. Jak działa program?
Najpierw system operacyjny ładuje określony program z dysku twardego do pamięci systemowej (RAM), a następnie umożliwia jego wykonanie, nakazując procesorowi kontynuowanie wykonywania od pierwszego adresu pamięci programu. Procesor wykonuje dowolne polecenie, które widzi, a następnie przechodzi do następnego, często powtarzając tę procedurę miliony razy na sekundę.
32-bitowe procesory wykonują na bieżąco instrukcje 32-bitowe (4 bajty, podwójne słowa), podczas gdy 64-bitowe procesory wykonują na bieżąco instrukcje 64-bitowe (8 bajtów, cztery słowa). Instrukcje te są wbudowane w procesor i to asembler zamienia kod programowania na liczby binarne, które reprezentują natywne adresy poleceń procesora.
7. Zdefiniuj Podprogram
Podprogram to sekwencja instrukcji w programie, którą można wywołać i wykonać w dowolnym momencie. Innymi słowy, podprogram może być funkcją, metodą lub procedurą używaną do realizacji określonych zadań, takich jak wysyłanie wiadomości e-mail, otwieranie pliku lub wymuszanie strony logowania metodą brute-force.
8. Zdefiniuj Kod maszynowy
Kod maszynowy to ciąg liczb binarnych, który przechowuje instrukcje wykonawcze określonego mikroprocesora i powiązane z nim adresy pamięci.
Kod maszynowy jest tradycyjnie generowany przez asembler zaprojektowany dla tej konkretnej rodziny mikroprocesorów.
9. Wyjaśnij Języki skompilowane a języki interpretowane
Skompilowany język komputerowy musi zostać zamieniony na kod maszynowy przed wykonaniem na komputerze, podczas gdy język interpretowany nie wymaga wcześniejszej kompilacji.
Kiedy wykonujesz interpretowany program, jest on najpierw przetwarzany przez interpreter, który następnie kompiluje i wykonuje go na bieżąco. Te dodatkowe kroki sprawiają, że języki interpretowane, takie jak Python, są wolniejsze niż języki kompilowane, takie jak C.
10. Co to jest pętla?
Pętla to struktura kodu, która może powtarzać określone instrukcje, aż do osiągnięcia określonego kryterium. Kryterium to może obejmować stałą liczbę powtórzeń lub zmianę określonej zmiennej.
11. Wymień popularne typy pętli
Różne języki komputerowe będą interpretować pętle na różne sposoby. Jednak popularne typy pętli z rodziny C obejmują:
- Podczas gdy() Pętla – pozwala na wykonanie określonego kodu, o ile jest to wartość logiczna chwila() warunek jest spełniony.
Na przykład póki(2>1){print(“yahoo!”)};. - Dla pętli – zawiera trzy wyrażenia (inicjalizacja; ocena; aktualizacja), które definiują warunki do testowania, a także elastyczną metodę zwiększania liczby. Wykona również kod co najmniej raz.
- Wykonaj pętlę{} While(). – ten typ pętli wykonuje Do{} kod co najmniej raz przed ustaleniem, czy chwila() warunek jest nadal aktualny.
12. Wyjaśnij iterację vs Rekurencja
Iteracja to użycie pętli do wykonania tych samych kroków kodu, natomiast rekurencja to proces, w którym funkcja wywołuje się wielokrotnie. Problem z rekurencją polega jednak na tym, że możesz dotrzeć do określonej głębokości, dopóki nie napotkasz problemów z pamięcią.
13. Wyjaśnij zadania Przerwij i kontynuuj w Pętli
A złamać instrukcja kończy wykonywanie pętli i kontynuuje wykonywanie reszty kodu komputerowego. A kontynuować Z drugiej strony instrukcja kontynuuje iterację pętli od początku.
14. Co to jest OOP?
OOP oznacza programowanie obiektowe i jest paradygmatem programowania, który implementuje projektowanie oprogramowania wokół danych i obiektów, a nie wokół funkcji i procedur.
15. Co to jest programowanie proceduralne?
Programowanie proceduralne to paradygmat programowania, który organizuje kod komputerowy wokół sekwencji lub kroków instrukcji do wykonania. Jak sama nazwa wskazuje, jest to podejście odgórne, które rozpoczyna kod od początkowej fazy zdarzeń i kończy się wraz z oczekiwanym zakończeniem zdarzeń.
16. Wyjaśnij programowanie funkcyjne
Programowanie funkcjonalne to paradygmat programowania komputerowego, który podchodzi do tworzenia oprogramowania poprzez zastosowanie funkcji sekwencyjnych, które nie zmieniają stanu ani danych dostarczonych argumentów.
Celem jest stworzenie solidniejszych programów, które przyniosą oczekiwane rezultaty bez nieprzewidzianych skutków ubocznych.
17. Wyjaśnij Język wysokiego poziomu
Język programowania wysokiego poziomu to język komputerowy, który bardziej odwołuje się do zrozumienia przez człowieka niż do specyfiki lub natury komputera.
Języki programowania wysokiego poziomu, takie jak C i Python, są łatwe do zrozumienia, podczas gdy język asemblera niskiego poziomu może być bardzo mylący dla początkujących.
18. Lista popularnych Języki niskiego poziomu
Istnieją tylko dwa języki programowania niskiego poziomu: asembler i kod maszynowy.
19. Zdefiniuj atak typu SQL Injection
Atak polegający na wstrzykiwaniu kodu SQL to proces polegający na wprowadzaniu instrukcji SQL w polach wejściowych, takich jak nazwa użytkownika lub adres, w nadziei, że programista nie wyczyścił odpowiednio danych wejściowych podczas programowania. A jeśli się powiedzie, taki atak umożliwia atakującemu uzyskanie dostępu administratora do serwera.
20. Co to jest tabela w SQL?
Tabela w języku SQL odnosi się do zbioru danych pogrupowanych w kolumny i wiersze. Każda kolumna ma odrębny typ danych, a w jednej bazie danych można mieć wiele tabel. Możesz także wysłać zapytanie do więcej niż jednej tabeli na raz.
Tworzysz tabelę za pomocą:
UTWÓRZ TABELĘ nazwa_tabeli(typ danych kolumna1, typ danych kolumna2, typ danych kolumna3,…);
21. Wyjaśnij różnicę pomiędzy obiektem a klasą
Obiekt jest instancją klasy, natomiast klasa jest planem, na podstawie którego tworzony jest obiekt. Obiekt może mieć stany i właściwości, takie jak kolor, wysokość, waga, prędkość i tak dalej.
Właściwości te muszą jednak zostać zdefiniowane lub przynajmniej zainicjowane wartościami domyślnymi.
22. Ile bitów to jeden megabajt?
W 8,000,000 megabajcie jest 1 8 10 bitów, ponieważ jeden bajt to XNUMX bitów, a jeden megabajt to XNUMX6.
23. Zdefiniuj zmienny typ danych
Float to typ danych reprezentujący liczbę z ułamkami dziesiętnymi. Stosuje się go w sytuacjach, gdy wymagany jest wyższy poziom precyzji niż zapewniają standardowe liczby całkowite. Przykładem pływaka jest:
0.013
or
25.932
24. Co oznacza HexaDecimal 0xFF?
0xFF oznacza liczbę dziesiętną 255 lub binarną 11111111. 0x oznacza notację base16 lub szesnastkową, która przebiega od 1 do 9, a następnie przechodzi od A do F, aby przedstawić 15. Zatem 0xF to dziesiętna liczba 15, podczas gdy 0xFF to dziesiętna liczba 255.
25. Wymień rodzaje błędów w programowaniu
Istnieją 3 główne rodzaje błędów w programie komputerowym, są to:
- Błąd składni
- Błąd logiczny
- Runtime Error
26. Co to jest błąd składniowy?
Błąd składniowy pojawia się w przypadku odstępstwa od często ścisłej składni języków programowania. Może to wynikać z prostego błędnego rozmieszczenia liter w niewłaściwych parametrach przekazywanych do funkcji. Większość kompilatorów będzie zawierać numer linii kodu źródłowego, w której wystąpił błąd.
27. Co to jest błąd logiczny?
Błąd logiczny to błąd wynikający ze sposobu działania programu. Tak więc, chociaż program może działać bezbłędnie, nie osiąga swojego celu. Błędy logiczne mogą wystąpić na wiele sposobów i być spowodowane wieloma przyczynami.
28. Co to jest błąd wykonawczy?
Błąd wykonania to błąd programu komputerowego, który pojawia się podczas wykonywania programu i wynika z nieprzewidzianych okoliczności. Tak więc, chociaż program działa bezbłędnie, problemy z pamięcią i siecią mogą powodować nieprawidłowe działanie programu.
29. Wyjaśnij Silne i słabo typowane języki
Język silnie typowany rygorystycznie określa różne typy danych i sposób ich konwersji, podczas gdy język słabo typowany nakłada mniej ograniczeń na typy danych i ich definicje.
Wiele języków o słabym typie automatycznie konwertuje typy danych, podczas gdy języki o silnym typie często wymagają jawnych konwersji.
30. Czym jest architektura MVC?
MVC odnosi się do kontrolera widoku modelu i jest wzorcem tworzenia oprogramowania dla interfejsów użytkownika. Dzieli logikę programu na 3 części.
model część obsługuje podstawową logikę danych obiektów, o których mowa, podczas gdy widok obsługuje wyświetlanie informacji użytkownikowi, oraz kontroler obsługuje przepływ danych pomiędzy widokami i modelami. Projekt MVC jest często używany w programowaniu obiektowym.
31. Zdefiniuj Algorytm
Algorytm to ciąg procedur zaprojektowanych w celu rozwiązania konkretnego problemu. Procedury te są zwykle podzielone na mniejsze etapy i komputer wykonuje je za każdym razem dokładnie w ten sam sposób.
Przykłady algorytmów obejmują rozpoznawanie twarzy, wyszukiwarkę Google, sposób wiązania butów, kodowanie lub szyfrowanie danych i tak dalej.
32. Co jest Nauczanie maszynowe?
Uczenie maszynowe lub ML to sekcja sztucznej inteligencji, która koncentruje się na pomaganiu systemom w identyfikowaniu wzorców i samodzielnym podejmowaniu decyzji poprzez wykorzystanie danych.
To następnie poprawia ich wydajność lub efektywność. Systemy uczenia maszynowego mogą być nadzorowane, bez nadzoru i oparte na wzmocnieniu.
33. Jakie są Wyrażenia regularne?
Wyrażenie regularne lub Regex to ciąg znaków używany do definiowania wzorców wyszukiwania w dokumentach tekstowych. Różne języki programowania implementują wyrażenia regularne lub korzystają z popularnych bibliotek wyrażeń regularnych. Przykładowe wyrażenie regularne pasujące do wszystkich znaków w tekście to:
(.*)
podczas gdy poniższe pasują tylko do plików mp3:
.+\.(mp3)$
34. Co robi operator modułu (%)?
Operator modułu % pobiera dwa operandy i dzieli pierwszy operand za pomocą drugiego. Następnie zwraca pozostałą część operacji.
Często używa się go do testowania liczb nieparzystych i parzystych poprzez podzielenie dowolnej liczby całkowitej przez 2, gdzie wynik 0 oznacza liczbę parzystą, a 1 oznacza liczbę nieparzystą.
35. Wyjaśnij Rozwidlanie procesu
Rozwidlanie pochodzi z widelec() funkcja w systemach Unix i Linux, która może zostać wykorzystana przez działający proces do utworzenia własnej kopii. Zatem rozwidlenie procesu polega na powielaniu procesu w celu utworzenia dwóch podobnych i jednocześnie wykonujących się procesów.
Dodatkowy rodzaj rozwidlenia polega na pobraniu kodu źródłowego projektu open source i stworzeniu z niego zupełnie nowego programu.
36. Wyjaśnij Zakładanie wątku
Tworzenie wątków to proces tworzenia nowego wątku procesora w celu uruchomienia procesu. Spawnowanie jest często wykorzystywane przez programy wymagające dużej mocy obliczeniowej w celu wykorzystania możliwości wielowątkowości procesora, a jego powodzenie zależy od procesora, na którym działa, liczby jego rdzeni i liczby wątków na rdzeń.
37. Co zrobić Zastrzeżone słowa Oznaczać?
Słowa zastrzeżone to terminy, których nie wolno używać jako identyfikatora w języku programowania. Obejmuje to funkcje, zmienne i etykiety. Są zastrzeżone, bo zostały już zdefiniowane i mają określone znaczenia.
38. Wymień popularne słowa zastrzeżone
Różne języki mają różne słowa zastrzeżone w zależności od ich składni. Oto najpopularniejsze słowa zastrzeżone w programowaniu:
- IF
- TRUE
- FAŁSZYWY
- SWITCH
- ELSE
- Sprawa
- BOOLEAN
- POWRÓT
- FUNKCJA
- BREAK
- GOTO
39. Co to jest ciąg?
Ciąg to sekwencja znaków, często przechowywana w tablicy i używana do definiowania danych tekstowych. Najpopularniejszym ciągiem jest „witaj świecie”.
40. Co to jest zmienna?
Zmienna to dowolna wartość, która może ulec zmianie podczas wykonywania programu. Zmienna może mieć dowolny typ danych, w tym ciągi znaków i liczby całkowite. Na przykład program jest inicjowany jak poniżej:
int a = 0;
intb = 1;
następnie podczas wykonywania wprowadzane są zmiany:
b = a+b; //b różniło się
41. Co to jest stała?
Stała to zmienna, która nie powinna się zmienić podczas wykonywania programu. Dobrym przykładem jest prędkość światła lub dźwięku. Różne języki programowania umożliwiają definiowanie stałych na różne sposoby. Na przykład w C:
const float środkowy_c = 261.62; //środkowy klawisz c w fortepianie ma częstotliwość 261.6255 Hz
42. Zdefiniuj tablicę
Tablica to typ zmiennej używany do przechowywania wielu wartości jednocześnie. Wiele języków umożliwia przechowywanie tylko wartości podobnych typów danych, podczas gdy inne języki mogą obsługiwać tablice różnych typów. Możesz także mieć tablice wielowymiarowe, które są tablicami tablic i mogą powodować bałagan.
Zdefiniowanie tablicy w mql4 jest proste dzięki:
ciąg TekstArray[100]; //tablica stu ciągów znaków
43. Co jest Przeciążenie funkcji?
Przeciążanie funkcji to metoda, która umożliwia programiście zdefiniowanie wielu funkcji o tej samej nazwie, ale różnych funkcjonalnościach. Osiąga się to poprzez utworzenie różnych wersji funkcji z różnymi argumentami. Kompilator wie wówczas, która funkcja jest potrzebna na podstawie typu i liczby dostarczonych argumentów.
44. Zdefiniuj Zadzwoń przez referencje
Wywołanie przez referencję to metoda przekazywania adresu pamięci argumentów do funkcji, w przeciwieństwie do standardowej metody przekazywania kopii wartości argumentu. Celem wywołań referencyjnych jest bezpośrednia modyfikacja argumentu przez funkcję.
45. Wyjaśnij Operatory arytmetyczne
Są to znaki specjalne służące do wykonywania operacji arytmetycznych w języku programowania. Operatory arytmetyczne obejmują:
- Dodatek lub jednoargumentowy plus (+)
- Odejmowanie lub minus jednoargumentowy (-)
- Mnożenie (*)
- Dział (/)
- Moduł (%).
46. Wyjaśnij Operatory logiczne
Operatory logiczne to słowa lub symbole używane do wykonywania operacji w oparciu o logikę warunkową. Większość języków ma tylko 3 operatory logiczne:
- ROLNICZE (&& w C, C++, JavaScript)
- OR (|| w C, C++, JavaScript)
- NIE (! w C, C++, JavaScript)
47. Logiczne 1 ORAZ 0 =?
Otrzymasz logiczną operację 1 ORAZ 0 fałszywy ponieważ drugi operand ma wartość 0 i oba operandy AND muszą mieć wartość 1 lub PRAWDA, aby uzyskać dodatni wynik.
48. Logiczne NIE 1 =?
Otrzymasz logiczną operację NOT 1 fałszywy ponieważ operator NOT neguje wszystko, co mu podasz, co oznacza, że zamienia 1 na 0, a 0 na 1. Zatem podanie argumentu 1 lub PRAWDA daje w wyniku 0 lub FAŁSZ.
49. Logiczne 1 NAND 1 =?
Spowoduje to logiczną operację 1 NAND 1 fałszywy ponieważ oba operandy mają wartość PRAWDA, a operator NAND zawsze neguje dwa podobne wejścia, tworząc przeciwne wyjście.
Tak więc, jeśli operacja była 0 NAND 0, wówczas wynikiem będzie 1 lub PRAWDA.
50. Logiczne 1 XOR 1 =?
Spowoduje to wykonanie logicznej operacji 1 XOR 1 fałszywy ponieważ podczas gdy normalna operacja OR da PRAWDĘ na jednym lub obu wejściach jako PRAWDA, operacja XOR (wyłączne LUB) da PRAWDĘ tylko wtedy, gdy tylko jedno wejście, a nie drugie, będzie PRAWDA.
Wniosek
Dotarliśmy do końca listy 50 najważniejszych pytań do wywiadu programistycznego i odpowiedzi na nie, które należy znać. Jak widać, świat programowania jest ogromny, ale i ekscytujący.
Nie ma dwóch takich samych wywiadów. Tak więc, chociaż ta lista wskazuje właściwe kierunki tematyczne, powinieneś także spróbować lepiej zrozumieć każdy problem.





