Задать вопрос

Какой уровень MySQL/MariaDB нужно знать среднему php-программисту?

Планирую в скором времени менять работу и решил подготовиться. К сожалению, на данный момент 95% работы с базой у меня это миграции и ActiveRecord. Уровень всех моих сайтов — CRUD. В одном проекте даже хранимые процедуры вызывал, но не писал свои ни разу :)

Мой текущий уровень:
1) основа основ (insert, update, delete, create table, join).
2) вроде бы, умею создать адекватную нормализованную базу, поставить нужные FK, индексы.
3) не особо понимаю как работать с expain. Точнее, что делает эта команда я знаю, но как правильно работать с результатом её действия не знаю. Как оптимизировать запросы.
4) никогда не занимался репликациями, шардингами, партициями. Какие движки и когда нужно использовать. Всегда InnoDB.

Но, тем не менее, рассчитываю на должность миддла и поэтому хочу подготовиться к собеседованиям. Что будут спрашивать? Какую литературу почитать и попрактиковаться?

PS: Страх ещё вызван тем, что на одном из прошлых собеседований меня начали спрашивать, что такое PK и индексы. Ну я ответил в общем. Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?
  • Вопрос задан
  • 2194 просмотра
Подписаться 14 Простой Комментировать
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Для миддла надо подтянуть только п. 3. У Светы Смирновой есть несколько отличных презентаций по работе с explain, они легко находятся гуглом.

Еще желательно различать транзакции и блокировки, когда что использовать.

Про устройство на уровне файлов - я думаю, это дополнительные вопросы. На собеседовании всегда задают вопросы, которые не влияют на соответствие должности, но просто добавляют штрихи к портрету интервьюируемого. В ответ на такой вопрос можно честно сказать что так глубоко не копал, и попробовать просто порассуждать на тему, как оно может быть устроено.

Вообще, по моему опыту, не стоит переоценивать результаты интервью. Когда я 5 лет назад ходил по собеседованиям, то после двух из них, которые я сам посчитал проваленными, мне прислали предложения о работе.
Ответ написан
un1t
@un1t
Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?


Нет это заморочки конкретного человека.

Эксплейн надо понимать, что он выводит и как с его помощью найти проблему, оптимизировать запрос. А так нужно знать про индексы, селективность, транзакции, джойны, group by, having, подзапросы.

Я много раз видел что люди спрашивают, зачем знать SQL, если есть ORM. Десять лет назад, люди спрашивали обратное - зачем нужен ORM, если я тоже самое могу написать на SQL. У меня ощущение, что веб-разрабы с опытом работы от пары лет вовсе не знают SQL. Либо они используют только ORM, либо вообще какую-нибудь MongoDB (хотя во многих случаях ее использование не адекватно задаче).

Ну и от команды к команде средний уровень сильно разнится.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
PS: Страх ещё вызван тем, что на одном из прошлых собеседований меня начали спрашивать, что такое PK и индексы. Ну я ответил в общем. Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?
Чёткого деления на "Jun/Mid/Sen" - нет и быть не может по определению. Технологий столько, что знать их все кому-либо не под силу. К тому же, технологии развиваются очень быстро... Соотв., компаний так же много и требований к должности у них тоже много. Тот, кто сейчас работает на должности ведущего разработчика в конторе типа ООО "Шаражмонтажсайтпродаж" (условно), вряд ли сможет претендовать на должность хотя бы мидла в какой-то серьёзной, солидной фирме.
Ответ написан
inoise
@inoise Куратор тега Карьера в IT
Solution Architect, AWS Certified, Serverless
Среднему программисту надо в любом случае иметь понимание. Надо понимать агрегаты, писать запросы по памяти, разбираться в связях и всех видах интересов, уметь в транзакции и понимать как работает анализатор запросов. Уметь в explain надо, но знать его досканально не обязательно - главное уметь делать выводы.

Скорее всего в той компании на эту позицию нужен более квалифицированный разраб. Ну, или ини хотели прощупать ваш текущий потолок
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы