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?
Odpowiedzi:
Trzy pytania, odwołujące się do końca odpowiedź Eric Lippert jest tutaj :
Pytanie 1:
Pytanie 2:
Pytanie 3:
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.
źródło
Sugerujemy zamienniki, ta lista ma wiele do zrobienia.
źródło
źródło
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.
źródło
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
Rdzeń
enum
słowo kluczowe i kiedy go użyjesz?zaawansowane
źródło
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.
źródło
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 ”
źródło
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
źródło
Dziesięć pytań:
Pokaż pętlę for, która sumuje wartości tablicy. Zapytaj więc, co robi fragment kodu. [Czy potrafią odczytać podstawową pętlę?]
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.]
Pokaż fragment kodu z dwoma odnośnikami
a
ib
wskazując na dwa różne obiekty z polem całkowitymx
ustawionym na powiedzmy7
i5
. Następnie przypisanie:a = b;
,b.z = 9;
, a następnie poprosić o wartościa.z
. [Czy rozumieją referencje?]Pokaż dwa zagnieżdżone dla pętli (używając indeksów
i
ij
), 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)
idouble y = x * j
. Poproś ich o zwiększenie wydajności kodu. [Czy wiedzą o prostej zależności od pętli?]Zapytaj ich, co jest nie tak w próbce kodu A. (patrz poniżej.) [Czy potrafią myśleć logicznie?]
Zapytaj ich, co jest nie tak w próbce kodu B. (patrz poniżej.) [Również w zakresie logicznego myślenia.]
Poproś ich o odwrócenie tego warunku:
(s != null && s.Length != 0)
bez użycia!
. [Czy znają Prawo DeMorgan?]Pokaż fragment kodu podobny do starych reklam Lint w czasopismach: Poproś ich o znalezienie błędu. Na przykład przeciążenie
equals
zamiast go zastąpić. [Czy są dobrymi prawnikami językowymi? Tego rodzaju pytania najczęściej sprawdzają doświadczenie: czy widziałeś to już wcześniej?]Czy potrafią opisać, jak przeprowadzić wyszukiwanie binarne za pomocą posortowanej tablicy?
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:
Przykładowy kod B:
źródło
Z pewnością robisz to źle. Określ grupy, w których chcesz umieścić każdego ucznia
na przykład
i tak dalej. Po zidentyfikowaniu odpowiednich grup, które będą zależeć od materiału kursu, ustalenie, jakie pytania będą proste.
źródło
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ę.
źródło
Utwórz 5 prostych konstrukcji schematu blokowego i osobną listę odpowiedzi. Poproś, aby dopasowali zdjęcie do wyrażenia.
Narysuj:
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.
źródło
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ąć:
Następnie po tym:
Następnie zadaj 5 pytań na ten temat:
Krótko wyjaśnij, jak działa wyrzucanie elementów bezużytecznych w .Net
....
Jak coś debugować, jeśli masz problem?
źródło
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:
Następnie możesz zadać kilka pytań technicznych, takich jak (powinno to być zgodne z tematem). dla OOP na przykład:
źródło
Szukam rozwiązania problemów, silnego nawyku uczenia się, rozwoju zawodowego i szerokiej wiedzy na temat podejść.
chicken
jako obiekt? Jak to się ma do innychbirds
? Co powiesz namammals
ianimals
?Oczekuję, że programiści:
źródło
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
Praktyczny
źródło
Ponieważ są już zatrudnieni, myślę, że w celu szybkiej oceny należy (wraz z pytaniami programistycznymi) o nie zapytać
Te pytania mają na celu sprawdzenie ich świadomości na temat systemu, którego używają podczas programowania,
źródło
Zacznij od najniższych poziomów stosu oprogramowania i wyżej.
źródło
źródło