Топ 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 - он.