Топ 25 на въпроси за интервю по телефона

Топ 25 на въпроси за интервю по телефона

Тези въпроси са подходящи за много постове, разработчици, софтуерни инженери, за QA, тъй като обхваща най-основните аспекти на програмирането, но те са най-подходящи за кандидати за позицията на разработчика. Между другото, ако сте на Java разработчик, тогава имате отделен списък. Въпросите по-долу, са подходящи за всички: Python-, Ruby-, Perl- и C # -programmistov.

1. Колко време е необходимо, за да се получи един елемент от свързан списък? От двоично търсене дърво? Или от хеш таблицата? И ако в тези структури ще бъде един милион записи?

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

2. Каква е разликата между претоварване и първостепенни нещо?

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

3. Каква е разликата между процеса на разклоняване и създаването на нова тема?

Когато процесът на разклоняване създава нов процес със същия код, но в отделна памет, като същевременно се създава нов код нишка се изпълнява едновременно с основната нишка, но в същото пространство в паметта.

4. Какво е критичен участък?

Критична точка - част от код, който може да бъде променен от всички теми. С цел защита на критичните участъци, семафори и брави, използвани (в Java това е направено с помощта на ключовата дума, или чрез синхронизирано ReentrantLock). Прочетете повече.

5. Каква е разликата между тип стойност и вида на връзки?

видове стойност повече оптимизирани и съхраняват стойност, докато видовете връзки се съхраняват референтен обект. Прочетете повече тук.

6. Какво е купчина и стека на процеса?

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

7. Какво е система за контрол на версиите?

системи за контрол на версиите се използват за ефективно съхраняване и за сравнение на различни версии на вашия продукт. Когато професионално развитие винаги се използва една или друга система за контрол на версиите: Git, SVN, CVS, по необходимост или другата страна, и колкото повече разработчиците, участващи в проекта, толкова по-голяма нужда от такава система. системи за контрол на версиите играят важна роля в разрешаването на конфликта в кода и да подкрепят история на проекта. Подробности тук.
прибл. Транс. Между другото, тук са някои добри книги по темата.

8. Какво е silnotipizirovanny език за програмиране?

В silnotipizirovannyh компилатор да гарантира коректността на типове данни. Например, не можете да съхраните номер в низа тип, както и обратното. Java - silnotipizirovanny език и поради това, че има много видове, като вътр. плава. String. Чар. Булева и т.н. Можете да съхранявате ценности само в съответните класове. В slabotipizirovannyh тип променлива език се определя по време на компилация, в зависимост от контекста. Популярни езици slabotipizirovannye: Python, Perl и. Прочетете повече.

9. Каква е разликата между валиден и добре оформени XML?

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

10. Каква е разликата между DOM- и XML SAX-синтактичен анализ?

DOM-синтактичен анализ товари в паметта всички наведнъж XML-файлове и създаване на тази основа на DOM дърво, че и разбор. Поради начина на работата на DOM парсера, не е подходящ за големи-на XML файлове, тъй като те заемат твърде много памет, но тя е по-бързо. SAX-анализатора работи въз основа на събития: отваряне / затваряне таг, начало / край атрибут, и т.н. Така SAX-анализатор е малко памет, но по-бавно DOM-анализатор. Подробна отговор тук.

11. Как да се отнасят един към друг нишки и процеси?

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

12. Какво е неизменна клас?

13. Защо Макети обекти?

Макети обекти са полезни за тестване на определена област в кода си. Например, можете да създадете програма за наблюдение на валутните курсове, което отнема на данни от интернет, но не разполагате с адреса, на който човек може да се свърже. Фалшива създаващи обект, симулиране поведението ви трябва, можете да тествате вашия код. Има много библиотеки, с които можете да създадете Макети обекти за Java. Например, Mockito и PowerMock. Отговорът е тук.

14. Какво е SQL инжекция?

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

15. Каква е разликата между вътрешната JOIN и НАЛЯВО JOIN?

В SQL, има два вида JOIN оператор. INNER JOIN и ВЪНШНА JOIN. ВЪНШНА на присъединяване, също може да бъде два вида: НАЛЯВО JOIN и НАДЯСНО JOIN. Основната разлика между INNER JOIN и НАЛЯВО JOIN е, че в първия случай и от двете таблици са избрани само съответните документи, а във втория случай от първата таблица се избират всички записи, а вторият е само подходящо. Винаги обръщайте внимание на исканията на «всички», тъй като те обикновено изискват НАЛЯВО JOIN. например, въпрос, който изисква да намерите всички клонове и на броя на служителите в тях. Ако използвате вътрешната JOIN. прескочи празните офиси където никой не работи. Повече тук.

16. Какво означава буквата V в MVC акроним?

V - Вижте го в MVC модел. Вижте - това е, което потребителят вижда, гледайки към вашата уеб страница. Идеята на модела MVC е, че всички уеб приложение е разделена на три отделни независими части, които могат да се редактират, не се страхува да се докосне други: Модел, Виж, контролер. Модел - сами бизнес обекти (като потребител, разработчик, директор и т.н.), и контролера - която управлява модели. За Java има много рамки, които прилагат MVC - например, Struts 2 и Spring MVC. Подробности тук.
прибл. Транс. можете да прочетете тук като парадигма на MVC.

17. Каква е разликата между клас и обект?

Клас - "рисуване", в която е създаден обект. Той описва възможно поведение на обекта, се създава и обектът изпълнява това поведение. Вие не можете да създадете обект без клас, съответстващ на него. Прочетете повече.

18. Какво е хлабав съединителя (инж. Loose-съединител)?

Loose свързване - желаното качество на софтуера, като един модул той може да бъде лесно да се променя без да се засяга втората. Например, ако правите промени в потребителския интерфейс, тя не трябва да се отразява на структурата на класовете на гръб.

19. Каква е разликата между състава, обобщаването и асоциацията?

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

20. Каква е разликата между интерфейс и абстрактен клас?

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

21. Какво е единица тестване?

Unit тестване - е начин за тестване на поведението не е цялото приложение като цяло и на конкретната част от кода. Има много начини за извършване на единица тестване на различни езици. В Java, за тази цел има JUnit и TestNG библиотека. Обикновено единица тестове се управляват автоматично по време на компилация, или в среда, като Дженкинс. Пример тук.

22. Кои са трите вида тестване съществува?

Yunit-, система и тестване дим. Звено тестване се използва за тестване на определена част от код, тестване на системата - да се провери цялата система, както и тестване на дим се извършва с цел да се гарантира изпълнението на основната и най-често се използва функционалността на системата, например, на интернет страницата за резервация на самолетни билети резервация трябва себе си и неговото премахване работи.

23. Каква е разликата между итерация и рекурсия?

Повторение използва една линия да се повтаря някои действия на няколко пъти и рекурсивни функции нарича себе си. Често, рекурсия може да осигури по-чиста и интуитивно решение за определени задачи, като например списък свързан "Кула на Ханой" преврат или низ. От друга страна, всяко повикване на функцията намалява пространството в стека, а след известно време можете да получите грешка стека преливане. Поради тази причина, на итерация обикновено е за предпочитане да се рекурсия. Повече тук.

24. Каква е разликата между операторите и ?

- малко по-оператор и - логично. може да се прилага като цяло число, както и Булева тип, докато - само Булева. Тя се прилага за всеки бит от двете променливи, които се сравняват, докато използвате вторият аргумент не може да участва на всички, ако първият е невярно. Харесва ми на този въпрос, и аз често го попитам като младши и старши-разработчици. Подробности тук.

25. Какъв е резултатът от операцията XOR 1 милион?

A: 0, тъй като XOR връща уреда само в случай, че един от аргументите е равен на една и един на нула. Например, 0 XOR 0 1 1 XOR нула и 1 и XOR 0 XOR 0 1 - он.