Таке питання мені досить часто задають, і я таки зважився на нього відповісти.
Хотів було написати чергову статтю про співбесідах, але мені здається формат вичерпав себе, так що читаємо і мотаємо на вус.
Фундамент
Міркувати і використовувати Google. Перше оцінити складно, для цього придумано багато «дурних» питань для співбесід. Другий пункт або прищеплюється в перші дні випробувального терміну, або розробник володіє їм спочатку, інший варіант ніхто не розглядає…
Общепознавательное
У мене є питання для співбесіди на загальний розвиток, що відбувається після вводу http://domain.com/index.php та натиснувши enter, ви повинні розповісти наступне:
- звідки і як браузер дізнається IP адреса сервера
- чому наш запит буде обробляти apache
- чому apache запустить PHP для обробки index.php
- яким чином PHP обробляє скрипт index.php
Я таки знову повертаюся до співбесід, і манить мене прям
З чого складається HTTP запит/відповідь (та відкрийте ж firebug або що у вас там встановлено і подивіться)
Установка зв’язки Apache+PHP+MySQL — потренуйтеся, це ой як треба.
Таки трохи про linux — про відмінності файлових систем у порівнянні з windows, про роздачу прав (chmod) і як вийти з vi без збереження.
Окремо варто згадати про гігієну коду — необхідно дотримуватися стандарти кодування, з безлічі існуючих рекомендую стандарти кодування Zend Framework’а, ну а ще краще ознайомитися з відповідними PSR
Пару-трійку днів тиждень буде потрібно на засвоєння базових знань.
PHP
Основи основ — отримання і обробка вхідних параметрів.
Відправляємо форму:
Лістинг index.php:
// в результате работы скрипта мы увидим ... function some_logic($a, $b = 24) { return ($a+$b)/$_REQUEST['b']; } $var1 = $_GET['a']; echo some_logic($var1); [/php] Работа с циклами, массивами и строками. [php] // переставьте буквы в словах в обратном порядке $str = "Hello world!"; [/php] Работа с базой данных и с файлами. Для усвоения материала — вот вам задание: написать анонимную доску объявлений (с бл… аплоадом картинок)
Повинні знати, як працює механізм сесій – тобто що відбувається від моменту виклику session_start, і яким боком це все пов’язано з cookies (пам’ятайте я говорив про HTTP?).
Знати для чого служить include, require і яка між ними різниця.
Різницю між echo і print не тільки знати, а й розуміти.
Таки навчитися працювати з об’єктами, розуміти різницю між абстрактним класом і інтерфейсом.
Чим більше досвіду, тим краще, але ви основи підтягніть за тиждень, ОПП зажадає ще тиждень-другий.
SQL
Основи синтаксису SQL. Трохи вникнути в MySQL і розуміти відмінності між MyISAM і InnoDB.
Знати як працюють LEFT/RIGHT/INNER JOIN’и — наочно у статті Visual Representation of SQL Joins (посилання на картинку для ледачих — Visual_SQL_JOINS_orig.jpg O_o)
Вміти спроектувати базу даних для невеликого проекту. Ось вам вимоги до БД бібліотеки:
В базі даних повинна зберігатися следующуя інформація:
- Що за книги у нас є в наявності
- Автори книг
- Відвідувачі бібліотеки
- Бібліотекарі
Дозволяє виконати наступні запити:
- Який витягне усіх авторів, яких читає відвідувач “Іванов”
- Який дозволить дізнатися хто на даний момент читає книги більше 3-х діб
Переробити БД, т. к. в бібліотеці найчастіше більше, ніж один примірник книги, а треба знати який саме примірник брав відвідувач.
Зосередженої вивчення протягом тижня вам вистачить для виконання даного завдання, для реальної роботи цього буде замало.
HTML та CSS
Сверстайте пару сторінок, від і до (HTML повинен бути валідним). Не слухайте, що це робота дизайнера/верстальщика/когось ще. Повірте моєму досвіду — вам віддадуть зверстану сторінку, ніхто за вас не буде інтегрувати HTML шаблон у вашу систему, так що знання HTML і CSS в обов’язковому порядку.
Забудьте про те, що Smarty створений для верстальників, і вони вам будуть готові шаблони віддавати — це казки. Про Smarty теж забудьте, хоча ні — мати уявлення що це таке звичайно треба, а от використовувати — ні.
Повинні розуміти CSS такого змісту:
#my p.sel:first-line .main li li a:hover + span {
color:#f00; /* Що це за колір? Включи логіку! */
}
Дізнатися що є блокова модель, так як працює float. Що є margin і padding.
Днів п’ять тижнів зо півтори вам вистачить для освоєння базових навичок верстальника.
JavaScript
Знати: синтаксис, про те як працюють події, розуміти що таке замикання, і як працює AJAX. Це небагато, вивчення даних питань у вас не займе більше тижня. Рекомендую прочитати підручник Іллі Кантора.
Далі прочитайте перші шість частин з моєї серії «jQuery для початківців» — це ще тиждень на засвоєння матеріалу.
Ще трохи напрягів
Розуміння шаблону MVC. Знайомство з яким-нить фреймворком (Zend Framework, Symfony, Yii, тощо). Можна пройти Quick Start від Zend Framework’а.
Навчитися працювати з БД за допомогою PDO. Знати що є SQL-ін’єкція.
Познайомитися з какой-нить сучасною системою версій (та хоч з SVN)
І на що я можу розраховувати?
Два місяці вивчення, і ви вже зможете претендувати на посаду Junior PHP розробник. Відповідь на меркантильне питання дивіться на DOU.
P. S. Цей топік на хабре був звичайно ж заминусован, але я залишився при своїй думці, і лише злегка змінив терміни навчання, і так — описаний процес навчання має на увазі, що ви вже знайомі хоч трішки з програмуванням, хоча б на рівні університетської програми.