Наскоро проведох телефонно интервю, на което ми бяха зададени различни

...
Наскоро проведох телефонно интервю, на което ми бяха зададени различни
Коментари Харесай

Разберете, че аз съм разработчик, а не компилатор

Наскоро организирах телефонно изявление, на което ми бяха заложени разнообразни въпроси за Java. Това е общоприетоо изявление и множеството от въпросите също бяха много общоприети:

Какво е полиморфизмът? Каква е разликата сред List и Set? Кога би трябвало да употребявате първото и по кое време второто? Къде можете да срещнете взаимно блокиране (deadlock)? Каква е разликата сред прецизното и слабото типизиране?

В общи линии въпросите бяха напълно естествени. Лично на мен не ми хареса въпросът за полиморфизма, тъй като той е толкоз тясно обвързван с множеството обектно-ориентирани езици и наследяването, че множеството хора, които го употребяват (например при пренаписване или претоварване на даден метод), даже не се замислят, че: „ О! Това е полиморфизъм в деяние!„. Вместо това бих задал въпроса „ Какво е наследяването и къде се употребява? “, тъй като множеството обектно-ориентирани езици имат основна дума или образец за него. Но това към този момент е мое персонално желание и аз изцяло разбирам логиката на интервюиращата компания.

Въпросът за прецизното и слабото типизиране бе малко необикновен, тъй като моят интервюиращ в действителност имаше поради контрола на видовете, а не прецизното типизиране, тъй че беше малко сюрпризиран, когато споделих, че C има едва статично типизиране, Java има прецизно статично типизиране, а Python има прецизно динамично типизиране (мисля, че JavaScript употребява едва динамично типизиране, само че не го споменах).

Тези въпроси обаче бяха последвани от „ нано-въпроси “:

В кой пакет се намира List? В кой пакет се намира File? Коя основна дума се употребява за осъществяване на унаследяването?

(Имаше и „ общоприети въпроси за изявленията като „ къде се виждате след пет години “ и т.н.)

Ръс Олсен споделя, че „ нановъпросите “ водят до две последици:

Освен че не ви споделят съвсем нищо за претендента, тези дребни въпроси имат два действителни минуса: първо, те лишават времето, което бихте могли да отделите за по-добро опознаване на индивида и да разберете дали е задоволително интелигентен, дали има нужния опит и дали ще се впише в екипа ви. Второ, сходни въпроси отблъскват тъкмо този вид умни и гъвкави хора, които желаете да наемете.

Аз вярно отговорих на тези нано-въпроси, само че мога да ви кажа, че те имат трети минус: нано-въпросите могат да доведат до подправено негативни отговори за тези, които другояче са идеални за вашата организация.

Добрият инженер мисли нереално, на езика на проектирането и построяването на системи, на езика на логаритмите, съставените елементи и техническия дизайн. Не е наложително той да знае всички елементи на синтаксиса на даден език, изключително в случай че е привикнал с първокласен IDE, който му оказва помощ в това (аз употребявам Eclipse: набирам List и по-късно натискам control-space, с цел да зареди java.util.List). По-важно е да схвана кой пакет би трябвало да употребявам, в сравнение с да запомня името му.

По същия метод е по-важно да мога да схвана къде би трябвало да употребявам заместничество и къде полиморфизъм, в сравнение с да дефинирам техните дефиниции.

По принцип всеки въпрос, на който може да се отговори за пет секунди благодарение на Google/ChatGPT, е неприятен въпрос. Любимият ми въпрос от телефонно изявление: „ Кой е обичаният ви програмен език? Какви са слабостите му? “

Въпреки това доста изявленията и доста изпити всъщност ви ревизират до каква степен добре можете да замените един компилатор. Дори сертификационните изпити за Java са склонни да натъртват на въпроси за синтаксиса и компилацията вместо на въпроси за това какъв брой добре можете да програмирате и проектирате системи.

Аз съм един добър инженер, а не добър компилатор. Не мога да погледна част от кода и незабавно да кажа какъв е казусът му и дали ще докара до ClassNotFoundException, компилаторът прави това вместо мен. Ако не незабавно, то най-малко когато се опитам да съставям кода. Означава ли това взаимозависимост от IDE? Вероятно, само че това не е безусловно нещо неприятно, тъй като IDE е един от инструментите, които използваме в ежедневната си работа.

Източник: kaldata.com

СПОДЕЛИ СТАТИЯТА


Промоции

КОМЕНТАРИ
НАПИШИ КОМЕНТАР