10 minutowy wywiad techniczny [zamknięty]

37

Muszę bardzo szybko dokonać oceny dziesiątek świeżych studentów. Mam 30 minut spotkania z każdym z nich (za dwa lub trzy dni). Chcę spędzać większość czasu na omawianiu aspektów nietechnicznych. Planuję więc wykorzystać 10 minut na pytania techniczne. Te same pytania dla wszystkich.

Wszyscy są już zatrudnieni (są studentami). Muszę wiedzieć, że jest to średni poziom, aby przygotować szkolenie.

Idealnie trudność must be progressive, aby ustawić poziom dla każdego. Poziom będę średni, a ja zrobię średnią dla każdego pytania.

Gdybyś miał tylko 10 minut i 10 pytań, które mógłbyś zadać kandydatowi, jaka byłaby twoja pierwsza dziesiątka?

użytkownik2567
źródło
6
Więcej kontekstu w pracy? Czy jest to pozycja administratora systemu lub pozycja programisty, a jeśli programujesz na niskim lub wysokim poziomie? Jakieś konkretne języki lub technologie w twoim sklepie? Wszystko to podyktowałoby moją listę pytań.
Chris,
4
Jaki rodzaj treningu? Programowanie? Ogólne IT?
Adam Lear
3
Odwróciłbym to i spędziłem 10 minut na rzeczach osobistych i 20 minut na sprawach technicznych.
Kyralessa
1
Wiem, że większość ludzi by to zrobiła. Ale wierzę w różne podejścia.
3
10 minut dla kandydata to za mało
Zzz

Odpowiedzi:

55

Trzy pytania, odwołujące się do końca odpowiedź Eric Lippert jest tutaj :

Pytanie 1:

W skali od 1 do 10, gdzie oceniasz siebie (umieść tutaj umiejętność)? Odpowiadają na [n], liczbę od 1 do 10.

Pytanie 2:

Czego możesz się nauczyć od kogoś na poziomie [n + 1]?

Pytanie 3:

Czego ktoś na poziomie [n-1] może się od ciebie nauczyć?

Najważniejszym czynnikiem przy podejmowaniu decyzji jest ustalenie, gdzie uczeń (realistycznie) stawia się , a te trzy pytania pomogą ci to szybko ustalić. Pomaga także zidentyfikować osoby, które mogą być zagrożone przez efekt Dunninga-Krugera (z obu stron), ale to inny temat.

Jeśli ktokolwiek może znaleźć odniesienie do tej metody na SO i edytować ten post, aby dołączyć link, byłbym bardzo wdzięczny.

W każdym razie powinno to spaść znacznie poniżej dziesięciu minut.

Tim Post
źródło
5
Łał! Całkiem nietypowa metryka. Nigdy tak nie myślałem o sobie. Dzięki!
Andrew Андрей Листочкин
Oczywiście kandydat odpowiada 10, aby uniknąć drugiego pytania.
prawej strony
4
@WTP Dziesięć to kłamstwo.
Tim Post
1
To jest wspaniałe. Gdyby zapytał mnie o to pracodawca, mógłbym wyjaśnić więcej o sobie w ciągu zaledwie kilku minut, niż zwykle mam szansę na 1 godzinę rozmowy.
Strachofawhackplanet
28
  1. Co to jest klasa?
  2. Co to jest metoda statyczna?
  3. Co to jest dziedziczenie?
  4. Co to jest polimorfizm?
  5. Co to jest klucz podstawowy?
  6. Co to jest klucz obcy?
  7. Jaka jest różnica między HTTP GET a HTTP POST?
  8. Co to jest usługa internetowa?
  9. Nazwij niektóre struktury danych.
  10. Jaki jest cel Mapera relacyjnego / obiektowego?

Sugerujemy zamienniki, ta lista ma wiele do zrobienia.

Eric Wilson
źródło
1
metody statyczne występują w wielu językach oprócz C ++, ale nie w tym przypadku jest to istotne. Uważam, że wielu uczniom trudno jest pojąć to pojęcie - a pytanie, czy je rozumieją, czy prośba o definicję, jest kiepskim sposobem na sprawdzenie, czy rozumieją, czy nie.
Kate Gregory,
3
Pamiętaj, że pytanie zawiera dziesięć pytań w dziesięć minut. Gdyby w ciągu trzydziestu minut było dziesięć pytań, chciałbym podnieść poziom trudności i zadać bardziej sensowne pytania otwarte.
Eric Wilson,
3
Naprawdę lubię pytania 1-8 na twojej liście, chociaż mogę zastąpić pytanie 9 lub 10 pytaniem „Dlaczego interfejsy są ważne” i / lub „Dlaczego klasa abstrakcyjna jest ważna?” (w tej kolejności)
Nicole,
7
O co chodzi z tymi wszystkimi pytaniami OO?
Rekursja
3
Ech, to są wszystkie pytania dotyczące funkcji językowych. Nie jestem do końca przekonany, że są ważne, wbrew bardziej teoretycznym rzeczom.
Andres Jaan Tack
20
  1. Wyjaśnij wskaźniki!
  2. Co to są zamknięcia?
  3. Jakich języków używasz w wolnym czasie i dlaczego?
  4. Porozmawiaj trochę o transakcjach!
  5. Jaka jest różnica między tłumaczem a JIT?
  6. Wyjaśnij podstawy kompilatora.
  7. Co dzieje się na poziomie pamięci podczas rekurencji (a co innego, gdy masz TCO)
  8. Jakie są ważne koncepcje programowania OO (i dlaczego są ważne)?
  9. Jakie nowe rzeczy oglądasz w domu i dlaczego jest to interesujące?
  10. Wyjaśnij różnicę między procesem a wątkiem.
nickik
źródło
20
Nie wydaje mi się, aby większość z nich była dobrym pytaniem dla osób całkowicie nowych w .net (lub programowaniu) - a nawet jeśli znają odpowiedzi, które
wynoszą
9
Zgadzam się, że te pytania bardziej przypominają pytania „jak głupkowaty jesteś” niż pytania „co wiesz / nauczyłeś się” dla studentów.
hyprsleepy
5
Okropnie zawiódłbym na tym teście, głównie dlatego, że nigdy nie studiowałem CS ani nie korzystałem z C. Może to pomóc ustalić, kto zwrócił uwagę na zajęciach, a kto programuje dla zabawy, ale nie wiem, czy będzie to pomocne w kontekst PO.
Eric Wilson,
3
Większość ludzi pomyliłaby większość z nich.
Rekursja
4
Dobre pytania, ale na niektóre nie można odpowiedzieć w ciągu jednej minuty.
zvrba
16

Moje doświadczenie studentów zacząłem od zera - znalazłem to, czego ludzie uczą się na uniwersytecie, a przydatne są dwa całkiem osobne zestawy.

Ale skoro masz szansę z nimi porozmawiać, głupio byłoby nie brać tego.

Zakładam, że ich tło jest mało wspólne, dlatego unikam pytań dotyczących konkretnego języka. Jedynym wyjątkiem, jaki uczyniłem w tym zakresie, jest założenie, że zrobili coś w Internecie, ale to pytanie może zostać zakwalifikowane jako coś równoważnego, jeśli są specjalistami od osadzania lub czymkolwiek.

Poprosiłeś, aby były postępowe, co próbowałem zrobić, ale jeśli moje przypuszczenie o braku podobieństwa jest prawidłowe, właściwe / złe pytania są stosunkowo trudne i wiele ich kompetencji będzie wynikać z tego, jak dobre będą ich odpowiedzi na bardziej ogólne pytania są.

Tak czy inaczej...

1) Na jakie języki i technologie byłeś narażony? Ile z nich (i które) spędziłeś na programowaniu przez ponad 50 godzin (to nie obejmuje wykładów, czasu laboratoryjnego itd., Ale obejmuje projekty i zadania, w których pisałeś kodowanie solo).

2) Opisz najbardziej złożony program, jaki kiedykolwiek napisałeś. Co go skomplikowało?

3) Czego nauczyłeś się na uniwersytecie (związany z programowaniem), że tak naprawdę nie uważasz, że rozumiesz poprawnie? Jeśli uważasz, że wszystko zrozumiałeś (sprawdź w tym miejscu ich oceny), porozmawiaj o aplikacji lub elemencie aplikacji, którą widziałeś, że nie wiesz, jak kodować i jak możesz zacząć o tym myśleć.

4) Jakie są podstawowe zasady programowania obiektowego?

5) Opowiedz mi jak najwięcej o relacyjnych bazach danych w ciągu 1 minuty

6) W przypadku aplikacji internetowej opisz metodę utrzymywania informacji o użytkowniku między stronami. Jakie zalety i wady istnieją dla opisanego mechanizmu.

7) Wybierz fragment powszechnie używanej funkcjonalności w środowisku komputerowym i wyjaśnij, jak bardzo krótko działa na poziomie programowym (np. Szyfrowanie, kompresja). Wyjaśnij również, jak musiałeś skorzystać z tej funkcji, którą zaimplementujesz (tutaj będę szukał faktu, że chociaż możesz wiedzieć, jak coś działa, prawdopodobnie lepiej jest pobrać bibliotekę).

EDYCJA: Zrestrukturyzowano i dodano kilka dodatkowych pytań, aby uczynić go bardziej progresywnym, jak pierwotnie zadano.

Jon Hopkins
źródło
6
Podoba mi się ta lista, chciałbym dodać kolejne pytanie: Czego nauczyłeś się na uniwersytecie, że nie widzisz praktycznego zastosowania w prawdziwym świecie? To może dać użyteczne wskazówki, jak myślą.
glenatron
2
Jeśli są jakieś dobre, 10 minut minęło po pytaniu 2 :-)
Sean Patrick Floyd
Kiedy pytasz o „zasady” OOP, czy masz na myśli zasugerować, że OOP jest religią?
compman
@compman - Najwyraźniej nie. dogmat może odnosić się do religii, ale nie jest wyłączny w tym kontekście i może również dotyczyć dowolnej organizacji, ruchu lub zawodu.
Jon Hopkins,
8

Jeśli są to studenci i chcesz sprawdzić, gdzie są w trakcie studiów, to naprawdę nie powinno być żadnych podchwytliwych pytań lub pytań, które zmusiłyby ich do intensywnego myślenia. Radzę skupić się na podstawach - nie ma sensu prosić ich o wyjaśnienie, w jaki sposób działa odbicie, jeśli nadal nie są w pełni przyśpieszone na przedmiotach i dziedzictwie.

Oto kilka przykładowych pytań, które można wykorzystać i być może zaczniesz od czegoś z podstawowej kategorii wiedzy, a następnie będziesz się poruszać na podstawie odpowiedzi na pytania, na przykład jak działa testowanie adaptacyjne .

Podstawy

  1. Jakie są podstawowe polecenia sterujące przepływem programu?
  2. Jakie są podstawowe operacje logiczne?
  3. Jaka jest różnica między pętlami while i for?

Rdzeń

  1. Krótko wyjaśnij programowanie obiektowe.
  2. Krótko wyjaśnij pojęcie dziedziczenia.
  3. Krótko wyjaśnij, jak działają bazy danych.
  4. Do czego służy enumsłowo kluczowe i kiedy go użyjesz?

zaawansowane

  1. Co możesz mi powiedzieć o generycznych C # lub szablonach C ++?
  2. Co możesz mi powiedzieć o przeciążeniu operatora?
  3. Jaka jest różnica między klasą a strukturą?
  4. Co możesz mi powiedzieć o odbiciu w .NET?
rjzii
źródło
6

Bez odpowiedzi na mój komentarz powyżej, są to rzeczy, które ogólnie przychodzą mi na myśl, ale nie jestem pewien, czy rozważę te techniczne.

  • Jakiego rodzaju kontroli wersji użyłeś?
  • Czy znasz metody tworzenia oprogramowania, takie jak agile, waterfall, tdd?
  • Do czego służy dokumentacja w oprogramowaniu?
  • Różnica między statycznie i dynamicznie wpisywanymi językami?
Chris
źródło
5
„Dlaczego styl kodowania spaghetti jest użyteczny?” - ostateczny
mlvljr
Haha, czy to po to, żeby ich oszukać?
billy.bob
@ m.edmondson Teraz proszę podać przykład przypadku, gdy nieuniknione jest przełamanie abstrakcji;)
mlvljr
Hmm, nie wierzę, że jest jakikolwiek przypadek, w którym jest to nieuniknione ;-)
billy.bob
4

Zdaję sobie sprawę, że próbujesz zbudować szkolenie w oparciu o to, czego nie wiedzą, i że planujesz zorganizować kilka „koszyków” szkoleń dla różnych grup studentów. Ponieważ masz tylko dziesięć minut, możesz zrobić listę rzeczy, o których myślisz, włączając się w szkolenie i zadać te szczegółowe pytania. Więc planujesz ich nauczyć C #. Zapytaj, czy dobrze to wiedzą. Zapytaj, czy korzystali z nowszych funkcji (LINQ, typy zerowalne, generyczne, ...). Jeśli w szkoleniu jest zawarta baza danych, zadaj kilka pytań na ten temat. W końcu może się okazać, że jeden z zaplanowanych tematów jest niepotrzebny, ponieważ wszyscy o tym wiedzą, a niektórzy potrzebują innych tematów i tak dalej. Jest to bardziej praktyczne niż próbowanie odpowiedzi na pytania niezwiązane z tym, co Ty ”

Kate Gregory
źródło
+1 - tak chciałem powiedzieć. Zapytaj ich, czego potrzebują, aby wziąć udział w przygotowanym dla nich szkoleniu.
mouviciel
4

Zadaj im pytanie FizzBuzz

Czy wiedzieli, jak to zakodować? Jakiego języka używali? Dlaczego kodowali to tak, jak zrobili? Czy użyli Rekurencji? Pętle Inne metody / funkcje? Wskaźniki?

Możesz również użyć tego pytania jako podstawy dla innych pytań (tj. Dlaczego używałeś / nie używałeś Rekurencji? Jak byś to napisał używając wskaźników?)

Nie obejmuje wszystkiego, ale może dać wyobrażenie o ich umiejętnościach kodowania

Rachel
źródło
1
O tak, obiecałem komuś ze społeczności, że zadam to pytanie. To będzie ostatnie pytanie i podzielę się wynikami ze wszystkimi.
1
@Pierre 303: Kiedyś prosiłem ludzi o napisanie funkcji, która sprawdziłaby poprawność kodu pocztowego. Zapewniam cię, że było tak samo pouczające jak FizzBuzz.
Scott Whitlock,
1
Dajesz mi możliwość podania wyników, jakie otrzymałem po zadaniu tego pytania. W 6 lub 7 wywiadach nikt nie był w stanie na nie odpowiedzieć. Większość z nich była świeżymi studentami, ale jeden miał 8 lat doświadczenia! Więc jestem trochę zdezorientowany ...
4

Dziesięć pytań:

  1. Pokaż pętlę for, która sumuje wartości tablicy. Zapytaj więc, co robi fragment kodu. [Czy potrafią odczytać podstawową pętlę?]

  2. Poproś, aby napisali pętlę for, która wypisze liczby od 1 do 10, oddzielając je przecinkami. [Oprócz „czy mogą to zrobić?” możesz ocenić, jak powtarzalny jest ich kod.]

  3. Pokaż fragment kodu z dwoma odnośnikami ai bwskazując na dwa różne obiekty z polem całkowitym xustawionym na powiedzmy 7i 5. Następnie przypisanie: a = b;, b.z = 9;, a następnie poprosić o wartości a.z. [Czy rozumieją referencje?]

  4. Pokaż dwa zagnieżdżone dla pętli (używając indeksów ii j), gromadząc wartości z niektórych wyrażeń. W najbardziej wewnętrznej pętli wykonaj dwa obliczenia: double x = Math.pow(2.0, i)i double y = x * j. Poproś ich o zwiększenie wydajności kodu. [Czy wiedzą o prostej zależności od pętli?]

  5. Zapytaj ich, co jest nie tak w próbce kodu A. (patrz poniżej.) [Czy potrafią myśleć logicznie?]

  6. Zapytaj ich, co jest nie tak w próbce kodu B. (patrz poniżej.) [Również w zakresie logicznego myślenia.]

  7. Poproś ich o odwrócenie tego warunku: (s != null && s.Length != 0)bez użycia !. [Czy znają Prawo DeMorgan?]

  8. Pokaż fragment kodu podobny do starych reklam Lint w czasopismach: Poproś ich o znalezienie błędu. Na przykład przeciążenie equalszamiast go zastąpić. [Czy są dobrymi prawnikami językowymi? Tego rodzaju pytania najczęściej sprawdzają doświadczenie: czy widziałeś to już wcześniej?]

  9. Czy potrafią opisać, jak przeprowadzić wyszukiwanie binarne za pomocą posortowanej tablicy?

  10. Czy potrafią opisać, w jaki sposób można zastosować metodę sortowania?

Mogą się wydawać „za krótkie”, ale uważam, że ocena uczniów może okazać się dość krótka. Naprawdę chcesz zobaczyć, jak kodują. (Wygląda na to, że zrobisz FizzBuzz na podstawie jednego komentarza).

Jeśli możesz założyć silniejszego ucznia, zechcesz również zapytać o niektóre klasyki, takie jak rekurencja, odwrócenie listy połączonych, a może zaawansowana wieloznaczna karta, taka jak objaśnienie listy XOR, lub jakie intuicje mogą mieć dlaczego sortowanie zestawu liczb ułatwia kompresowanie niż nieposortowanie.

Przykładowy kod A:

if (m != null)
    a = m;
else
    a = null;

Przykładowy kod B:

if (x != 0 || x != 1) {
    ...
}
Macneil
źródło
3

Z pewnością robisz to źle. Określ grupy, w których chcesz umieścić każdego ucznia

na przykład

No previous programming experience
Familiar with procedural constructs like variables, loops, branching
familiar with basic object orientated constructs like classes, interfaces, events, inheritance
familiar with using Generics/Templates
familiar with creating Generics/Templates

i tak dalej. Po zidentyfikowaniu odpowiednich grup, które będą zależeć od materiału kursu, ustalenie, jakie pytania będą proste.

Michael Shaw
źródło
3

Studenci są już zatrudnieni i chcesz stworzyć program szkoleniowy, więc częścią umowy jest ustalenie, jak szybko mogą się uczyć (i / lub co wiedzą: kogo to obchodzi?). Dlaczego nie wybrać łatwych, średnich i trudnych pytań i dać im wcześniej. Po co zasadzać na nich pytaniami, których mogliby nie znać, skoro można je łatwo nauczyć (przez niektórych)?

Przekonasz się, w przeciwieństwie do tego, co większość ludzi sobie wyobraża, że ​​wielu uczniów nie poradzi sobie zbyt dobrze, nawet z zadanymi pytaniami. W ten sposób poznasz swoich uczniów, ich wiedzę i umiejętność uczenia się.

Dan Rosenstark
źródło
2

Utwórz 5 prostych konstrukcji schematu blokowego i osobną listę odpowiedzi. Poproś, aby dopasowali zdjęcie do wyrażenia.

Narysuj:

  1. Jeśli zbuduj
  2. Jeśli jeszcze zbuduj
  3. Do While Loop
  4. Do Until loop
  5. Deklaracja przypadku Construct

Poproś ich o wyjaśnienie różnicy między 1 a 2.
Poproś ich o wyjaśnienie różnicy między 3 a 4.
Poproś o przykład, kiedy zastosowanie miałaby Konstrukcja Deklaracji Przypadku.

Michael Riley - AKA Gunny
źródło
1

Nie jestem pewien, czy byłoby to możliwe w 10 pytaniach w 10 minut. Może dać im 5 minut na powiedzenie, co wiedzą o .net. Następnie przygotuj listę około 20 tematów i wybierz 2 lub 3 spośród rzeczy, o których wspominali, i 2 lub 3 z rzeczy, o których nie mówili.

Na przykład możesz zacząć:

Powiedz mi krótko (masz 5 minut), jak utworzysz prosty projekt w języku C # w programie Visual Studio, od jego utworzenia do uruchomienia.

Następnie po tym:

OK, opowiedz mi trochę o następujących kwestiach. To będzie szybki strzał, 1 minuta na odpowiedź, więc nie próbuj być zbyt szczegółowy. Chcę tylko wyczuć to, co znasz.

Następnie zadaj 5 pytań na ten temat:

  • Wyjaśnij, czym jest klasa.
  • Jaka jest różnica między klasą abstrakcyjną a interfejsem?
  • Krótko wyjaśnij, jak działa wyrzucanie elementów bezużytecznych w .Net

    ....

  • Jak coś debugować, jeśli masz problem?

  • Yadda-yadda - Jestem pewien, że będziesz w stanie wybrać długą listę do wyboru spośród innych odpowiedzi
FinnNk
źródło
1

Wierzę w „samoocenę”! Jeśli wytłumaczysz osobie dokładną sytuację, w której się znajdzie, na przykład: „będziesz musiał kodować SQL ... z bazą danych zawierającą ponad 100 tabel i 500 000 rekordów, które muszą działać poniżej 4 sekund ...”. A jeśli zapytasz go: „Myślisz, że dasz radę?” - dostaniesz prawidłową odpowiedź.

Spędzę 5 pytań dotyczących oczekiwań uczniów i 5 bardziej technicznych:

  1. Czego oczekujesz od tego szkolenia?
  2. Jaki jest twój poziom (powinien być specyficzny dla domeny)?
  3. Czego chcesz zobaczyć / nauczyć się podczas tego szkolenia (wskaż 3 najważniejsze punkty)?
  4. Jeśli wykonamy ćwiczenia, co uważasz za bardziej przydatne? (warsztat, wybór wielokrotny)?
  5. Czego oczekujesz od nauczyciela?

Następnie możesz zadać kilka pytań technicznych, takich jak (powinno to być zgodne z tematem). dla OOP na przykład:

  1. Co to jest enkapsulacja?
  2. Co to jest interfejs?
  3. Wielopostaciowość?
  4. Podpisywanie?
  5. Dynamiczne wiązanie?
użytkownik7876
źródło
1

Szukam rozwiązania problemów, silnego nawyku uczenia się, rozwoju zawodowego i szerokiej wiedzy na temat podejść.

  1. Czy mogę zobaczyć twoje portfolio?
  2. Jakie 3 ostatnie książki techniczne przeczytałeś? Czemu?
  3. Który tekst programowania zmienił twój sposób myślenia? Czemu?
  4. Jak zdefiniowałbyś obiekt chickenjako obiekt? Jak to się ma do innych birds? Co powiesz na mammalsi animals?
  5. Czy potrafisz wyjaśnić (REST, polimorfizm, relacyjną algebrę, projekt parsera, MVC) w kategoriach laika?
  6. Jakie jest najciekawsze (lub najlepsze) oprogramowanie, które sam zbudowałeś?
  7. Czy potrafisz opisać języki, w których jesteś biegły, od ulubionych do najmniej ulubionych? Co cię frustruje w twoich najmniej ulubionych językach?

Oczekuję, że programiści:

  • Bądź zaradny i szybki
  • Uchwyć poprawnie podstawowe pojęcia
  • Naucz się zaawansowanych koncepcji
  • Śledź sukcesy i porażki (wyciągając z tego wnioski)
  • Ucz się stale, z namysłem
  • Po prostu komunikuj złożone problemy
  • Zachowaj równowagę i logikę, omawiając często problemy dogmatyczne
Bruce Alderson
źródło
1
Rzadko czytam książki programistyczne od deski do deski. Stanowią lepsze materiały referencyjne i wyjaśniające.
Andres Jaan Tack
Masz rację: jest kilka tekstów, których nie możesz przeczytać od deski do deski (materiał referencyjny), ale istnieje wiele niesamowitych tomów, które zmienią twój sposób myślenia. Na przykład: Objaśnienia wizualne Tufte, Paradoks wyboru lub Pragmatyka języka programowania (lub cokolwiek innego autorstwa Hofstadtera).
Bruce Alderson
„istnieje wiele niesamowitych tomów, które zmienią twój sposób myślenia”, który nie ogranicza się do książek technicznych / programistycznych. Poza tym nie mam portfolio, wszystkie moje zadania były bezpiecznymi systemami, byłbym zepsuty.
NimChimpsky
Przeznacz trochę czasu na otwarty projekt lub organizację non-profit. Ważne jest, aby zobaczyć prawdziwą pracę przed zatrudnieniem kogoś (w końcu ostatecznie pokażesz swoją prawdziwą pracę). Portfolio jest tak samo ważne jak dobrze utrzymane CV.
Bruce Alderson
1

Przydatna jest tu taksonomia Blooma. Chcesz zdobyć różnorodne poziomy wiedzy, od zapamiętywania na pamięć do analizy. Dzięki temu możesz dowiedzieć się, gdzie leży ich poziom umiejętności. Ponieważ PO szukał pytań, które mogłyby zadać uczniom, poniższa lista nie zakłada żadnej wiedzy, którą posiadałby (mam nadzieję) student z trzeciego lub czwartego roku.

Konceptualistyczny

  1. Co to jest niedopełnienie stosu?
  2. Jaka jest różnica między obiektem a klasą?
  3. Jaka jest różnica między funkcją a metodą?
  4. Zidentyfikuj niektóre mocne i słabe strony szybkiego sortowania i sortowania wtrąceniowego.
  5. Opisz, w jaki sposób napisany program wyświetlałby wszystkie wartości przechowywane w drzewie binarnym.

Praktyczny

  1. Czy korzystałeś z systemu kontroli wersji? W jaki sposób umożliwia członkom zespołu skuteczniejszą współpracę?
  2. Twój kompilator mówi „niezidentyfikowany symbol”. Co to znaczy?
  3. Co to jest „naruszenie segmentacji”?
  4. Nazwij niektóre struktury danych dostarczone przez składnię (tutaj wstaw język) lub standardową bibliotekę.
  5. Jak znaleźć i wyświetlić wszystkie adresy e-mail w 10 000 plików?
Barry Brown
źródło
1

Ponieważ są już zatrudnieni, myślę, że w celu szybkiej oceny należy (wraz z pytaniami programistycznymi) o nie zapytać

  1. Na jakiej konfiguracji systemu pracowałeś (konfiguracja sprzętowa komputera).
  2. Czy próbowałeś przetestować swój kod (projekt, nad którym pracowałeś podczas studiów) na innym systemie operacyjnym?
  3. Czy wolisz kodować w systemie Windows lub Linux (jeśli działały na innych systemach operacyjnych niż Windows)
  4. kodowanie jest szybsze / wolniejsze / lepsze zależy od systemu? (wyższe systemy = dobry czynnik do kodowania, ponieważ powolne systemy zmuszają Ling do kompilacji i tak dalej)
  5. Również jeśli zapytasz, czy wiedzą przynajmniej, czy sformatować dysk lub zainstalować system operacyjny na wypadek awarii / nie można uruchomić, polegając na pomocy specjalisty IT (to znaczy, czy potrafią poprawnie poradzić sobie z sytuacją systemu operacyjnego)

Te pytania mają na celu sprawdzenie ich świadomości na temat systemu, którego używają podczas programowania,

cod3r
źródło
0

Zacznij od najniższych poziomów stosu oprogramowania i wyżej.

  1. Co to jest BIOS?
  2. Jaka jest rola systemu operacyjnego?
  3. Co to jest wielozadaniowość? Co to jest dynamiczne linkowanie?
  4. Opisz, w jaki sposób kod źródłowy jest przekształcany w działający program dla wybranego języka ucznia (przykładowa odpowiedź dla C: preprocesor -> kompilator -> kilka plików obiektowych -> linker -> plik wykonywalny)
  5. Co to jest pamięć podręczna? Oszacuj względne czasy dostępu do pamięci podręcznej L1, pamięci podręcznej L2, pamięci RAM, dysku obrotowego (tj. Nie SSD).
  6. Wymień struktury danych, które można zaimplementować bez szukania szczegółów w literaturze.
  7. Jaki jest najbardziej złożony program, który napisałeś? Co go skomplikowało?
  8. Wyjaśnij rekurencję na przykładzie własnego wyboru.
  9. Dlaczego programy się zawieszają?
  10. Wyjaśnij, co to jest sekcja krytyczna i podaj przykład, w którym miałaby być wykorzystana.
zvrba
źródło
4
Wydaje się, że większość tych pytań pochodzi z książki o systemie operacyjnym i szczerze mówiąc ma niewiele wspólnego z programowaniem. Szczerze mówiąc, nie musisz nic o tym wiedzieć, jeśli masz jakieś zadania programowania.
Bryan Harrington,
1
Nieco przesadzone, ale: jeśli nie wiesz, jaka jest rola systemu operacyjnego, nie ma sensu rozmawiać o bezpieczeństwie i prawach dostępu na poziomie systemu operacyjnego lub bazy danych. Jeśli nie wiesz o procesie kompilacji, nie możesz debugować procesu kompilacji od A do Z. Jeśli nie wiesz o opóźnieniach w pamięci podręcznej, skończy się to kodem, który wypycha wszystko do DBMS, gdzie płaska plik byłby wystarczający. Jeśli nie wiesz o muteksach, nie wiesz nic o programowaniu równoległym. Reszta powinna mieć oczywisty związek z programowaniem.
zvrba
1
(A jeśli nie wiesz, co to jest BIOS, najprawdopodobniej nie wiesz nic o programowaniu sprzętu komputerowego.)
zvrba
4
Zacznij od podstawowej wiedzy na temat elektryczności. Zadrapanie: zacznij od fizyki atomowej. Następnie przejdź do BIOS-u.
Dan Rosenstark,
Chociaż są to bardzo ważne i podstawowe pytania, a każdy programista powinien znać odpowiedzi, czuję, że pierwsza połowa listy będzie stratą czasu, jak to rzeczy PC technicy również wiedzieć. Nie dają ci dobrego pomysłu, czy osoba, którą zatrudniasz, wie coś o programowaniu .
Ken Bloom
0
  1. Czy łańcuch jest zmienny czy niezmienny?
  2. Jaka jest różnica między klasą a klasą statyczną?
  3. Co to jest wskaźnik?
  4. Opisz złożoność.
  5. Jaka jest różnica między tablicą a połączoną listą.
  6. Jaka jest różnica między sortowaniem korespondencji seryjnej a szybkim sortowaniem?
  7. Podany arkusz kalkulacyjny z kolumnami Nazwa, adres, kod pocztowy i numer telefonu opisują sposób konwersji arkusza kalkulacyjnego do znormalizowanej bazy danych.
  8. Opisz różnice między metodami asynchronicznymi i synchronicznymi oraz sposoby ich obsługi.
  9. Jak przekażesz informacje z aplikacji po stronie serwera do aplikacji internetowej?
  10. Jaki jest twój preferowany język? Jakie są powody, dla których używałbyś tego języka w X? (tj. dlaczego chcesz używać Java nad C # i jakie są niektóre z podstawowych różnic?)
Kavet Kerek
źródło