22 найпоширеніші питання на співбесідах на посаду веб-розробника


Якісна підготовка – один з ключових елементів, необхідних для успішного проходження співбесіди, якою, до речі, часто нехтують.

Попри те, що ця стаття не претендує на об’єктивність, вона включає усі основні питання, які можуть бути задані по темі PHP, JS, JQuery, CSS, HTML, MySQL і ТОП, а також розгорнуті відповіді на них.

Вивчивши ці теми, ви помітно поліпшите свою теоретичну базу і значно збільшите свої шанси на отримання заповітної роботи.


– Скільки типів даних в РНР?

PHP підтримує 8 базових типів даних.

4 скалярні типи:

– boolean. Логічний тип даних, змінні цього типу можуть набувати значень true або false.

– integer. Цілочисельний тип даних, змінні можуть набувати цілих значень (.-2, – 1, 0, 1, 2.) в діапазоні від – 2^31 до +2^31. Якщо значення перевищує цей поріг – воно автоматично переводиться в тип float.

– float. Числовий тип даних з плаваючою точкою, може містити як цілі, так і дробові величини.

– string. Строковий тип даних. Містить нефіксовану кількість різних символів. PHP не накладає ніяких обмежень на довжину рядка, тому можна сміливо працювати навіть з ДУЖЕ великими рядками.

2 комплексні (складених) типи:

– array. Масив, містить впорядкований список елементів.

– object. Об’єкт, містить деякий об’єкт (екземпляр класу).

2 спеціальні типи:

– resource. Посилання на абстрактний елемент, т.з. зовнішній ресурс. Приклади зовнішніх ресурсів – посилання на файл і посилання на результат виконання запиту.

– NULL. Порожній тип даних, що означає відсутність якого-небудь значення. Про такі значення зазвичай говорять “не визначено”. Порожнім значенням можна ініціалізувати змінні будь-якого іншого типу.


– Що таке static функція і чим вона відрізняється від ” звичайної” (не static)?

Static належить класу, а не екземпляру класу. І викликається у класу, а не у об’єкту, тобто безпосередньо. Оголошення властивостей і методів класу статичними дозволяє звертатися до них без створення екземпляра класу. Атрибут класу, оголошений статичним, не може бути доступний за допомогою екземпляра класу (але статичний метод може бути викликаний). Оскільки статичні методи викликаються без створення екземпляра класу, то псевдозмінна $this недоступна усередині методу, оголошеного статичним. Доступ до статичних властивостей класу не може бути отриманий через оператор ->.


– чи Є різниця між одинарними і подвійними лапками в PHP?

У подвійних лапках дані ” парсятся”, а в одинарних – ні. При подвійних лапках в даному випадку виведеться Chimay, а при одинарних – $beer.

$beer = 'Chimay';echo "$beer";

– Написати програму, яка виводить прості числа, тобто що діляться без залишку тільки на себе і на 1.

$lst = array ();$k = " prime";for ($i = 2; $i < 100; $i++) { for ($j = 2; $j < $i; $j++) { if (($i % $j) == 0) { $k = "not prime"; }}if ($k == " prime")  $lst[] = $i;else $k = " prime";}foreach ($lst as $list) echo $list . "";

- Напиши программу-цензор, яка б замінювала ті, що вводяться користувачем у форму слова " fuck", " idiot" і " bitch" на "f**k", "id**t" і "bi**h".

$find = array ( 'fuck', 'idiot', 'bitch');$replace = array ( 'f * *k', 'id * *t', 'bi * *h');
If (isset ($_ POST['user_input'])  && !empty ($_ POST['user_input'])) { $user_input = $_ POST['user_input']; $user_input_new = str_ireplace ($find, $replace, $user_input); echo $user_input_new;}

- Що таке динамічні змінні?

Динамічною змінною вважається та, ім'я якої зберігається в самій змінній. Це так звана "змінна змінна". Наприклад:

$var = " first";$$var = " Second";// $$var == $first == " Second"

$$var - динамічна, її ім'я може мінятися разом зі зміною $var. Також можна зв'язати ім'я змінної з вмістом іншої змінної неявно:

$first = " second";$second = " third";print $first; // надрукує " second" print $$first; // надрукує " third"

- Що таке шаблони (патерни) проектування?

Патерн проектування - це загальне типове рішення деякої проблеми, багаторазово повторюване в процесі проектування архітектури програмного продукту. Вони показують стосунки і взаємодії між класами, дозволяють зробити систему гнучкою і легко змінюваною. За рахунок їх правильного використання підвищується коефіцієнт використання готових рішень.


- Напиши приклад реалізації поліморфізму.

Class One{ function foo (){ echo "Hellofromclass One"!; } function callMe (){ $this ->foo (); }}Class Two extends One{ function foo (){ echo "Hellofromclass Two"; }}$Two = new two ();$Two ->callMe ();

- Які ще є парадигми (моделі, підходи) програмування окрім ТОП?

З тих, що найчастіше зустрічаються: функціональна, аспектно-орієнтована і процeдурная.


- Треба алертом вивести якесь повідомлення, через 3 секунди після запуску скрипта. Як це зробити?

Так:

setTimeout (alert ("Hello"), 3000);

Чи так:

setTimeout (function (){alert ("Hello")}, 3000);

- Розкажіть пару слів про об'єкти в JavaScript

Об'єкти (вони ж - асоціативні масиви, хеши) і робота з ними в JavaScript реалізовані не так, як у більшості мов. Об'єкт в JavaScript є звичайним асоціативним масивом або, інакше кажучи, " хеш". Він зберігає будь-які відповідності "ключ => значення" і має декілька стандартних методів.


- Є дві функції. Чи є між ними різниця? Якщо є, то яка?

function f (a, b) { return a+b }

і

var f = function (a, b) { return a+b }

Різниця є - вона полягає у видимості функції. Варіант функції без var видний скрізь в поточній зоні видимості. У тому числі і до самого визначення функції. Варіант з var привласнює функцію змінної, тому така функція видно тільки після визначення.


- Що cделает код: break me_baby; ?

Вийде з поточного блоку циклу або switch на мітку "me_baby".


- Що таке SQL- ін'єкція?

SQL- ін'єкції - вбудовування шкідливого коду в запити до бази даних. З використанням SQL- ін'єкцій зловмисник може не лише отримати закриту інформацію з бази даних, але і, за певних умов, внести туди зміни. Уразливість по відношенню до SQL- ін'єкціям виникає через те, що призначена для користувача інформація потрапляє в запит до бази даних без належної обробки: щоб скрипт не був уразливий, вимагається переконатися, що усі призначені для користувача дані потрапляють в усі запити до бази даних в екранованому виді.


- Припустимо, у вас є інтернет-магазин. Складіть запит, який покаже, скільки грошей приніс кожен окремо взятий покупець в цілому за весь час існування магазину.

SELECT customer_name, SUM (order_price) FROM ordersGROUP BY customer_name;

- В чому різниця між записом #my і .my?

#my - селектор ID.

.my - селектор класу.


- Що таке псевдокласи?

Псевдокласи - це те, що зазвичай пишуть після селектора через двокрапку, щоб визначити реакцію або стан для цього селектора. Найвідоміші псевдокласи - це :link, :hover, :visited і :active. Псевдокласи мають наступну структуру:

selector:pseudo class { property: value;}

тобто треба усього лише помістити двокрапку між селектором і псевдокласом.

a.snowman:link { color: blue;}a.snowman:visited { color: purple;}a.snowman:active { color: red;}a.snowman:hover { text-decoration: none; color: blue; background -color: yellow;}

- Знайти усі елементи div з класом one, а також усі елементи p з класом two, потім додати їм усім клас three і візуально плавно спустити вниз.

$("div.one").add ("p.two").addClass ("three").slideDown ("slow");

- Вибрати div 'ы, у яких немає класу cls

$('div:not(.cls)');

- Що таке DOCTYPE і навіщо він потрібний?

DOCTYPE - це визначення типу документу (Document Type Definition (DTD)), правила, відповідно до яких здійснюється перевірка конкретного документу (веб-сторінки) XML або (X) HTML. Завдяки цьому запису браузер визначає, яка в цьому документі використовується версія DTD. А потрібний він для того, щоб браузери правильно відображали розмітку документу. Якщо не вказаний DOCTYPE, то браузер додаватиме " відсебеньки", причому кожен браузер додаватиме свої " відсебеньки". В результаті ні про яку кроссбраузерности не може і мові йти.


- Що таке entities?

Entities - це комбінації знаку & і буквеного або цифрового коду після неї, призначені для заміщення символів, які не можуть зустрічатися в " чистому" вигляді в HTML- тексті, наприклад, символу "<".


- Які магічні методи знаєш? Що це взагалі таке?

Це методи, зарезервовані в php, які розпочинаються з подвійного підкреслення "__".

Список усіх магічних методів :

  • __construct
  • __destruct
  • __call
  • __callStatic
  • __get
  • __set
  • __isset
  • __unset
  • __sleep
  • __wakeup
  • __toString
  • __set_state
  • __clone

__construct і __destruct - найпопулярніші методи, які реалізують базові поняття об'єктно-орієнтованого програмування: конструктор і деструкція;

__call, __callStatic, __get і __set - методи, пов'язані з перевантаженням звернень як до властивостей, так
і до методів. Методи __get () і __set () викликаються при установці і набутті значення властивості,
а методи __call () і __callStatic - при виклику методу. Варто відмітити, що ці магічні функції
викликатимуться тільки і виключно у тому випадку, якщо запрошений метод або властивість
не існують;

__isset - метод, що спрацьовує при виклику функцій empty () або isset () на неіснуючому
чи недоступній властивості класу;

__unset - спрацьовує при виклику функції unset () на неіснуючій або недоступній властивості класу;

__sleep і __wakeup - методи, які викликаються тільки з функцій serialize і unserialize со-
відповідально. Метод __sleep буде викликаний відразу при застосуванні до об'єкту функції serialize, а
метод __wakeup - при застосуванні unserialize. Зараз методи застосовуються для збереження поточного стану системи з подальшим відновленням цього стану
(наприклад, коннект до бази);

__toString - метод, за допомогою якого можна звертатися до класу як до рядка (наприклад, з
допомогою print або echo);

__set_state - метод, який викликається для класів, що експортують значення властивостей функ-
цией var_export ();

__clone - викликається при клонуванні об'єкту (введений для використання через те, що объ-
екты в php5 і вище передаються по посиланню);

__invoke - викликається при спробі використати об'єкт в якості функції.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *