И еще одна не очень удачная попытка трудоустройства.

2017-11-19 12:54:55

Автор: Jon

Удаленное собеседование на должность Laravel-PHP-программиста.

Собеседование на должность laravel-php-разработчика  проводилось в формате
скайп конференции (текстом) 13.07.2017. С той стороны - ТимЛид и Старший Менеджер проекта.

Менеджер:
вопросы, которые мы зададим довольно простые и призваны показать нам ваш
реальный уровень. Для ответа на каждый вопрос у вас есть по 5 минут.
Больше - считаем, что ответа ты не знаешь. Если все-таки нужно
больше на пару минут, чтобы закончить мысль - это допускается, но об этом
нужно предупредить, в течение первых 5 минут. Все вопросы на Laravel.
итак готов?

мой ответ
Да:

Менеджер:
поехали

-------------------------------------------------------------------------------------------------

Нужно добавить несколько полей в таблицу actual_lics. Именно:
title VARCHAR(150) DEFAULT NULL
some_date DATE NOT NULL
как ты бы это сделал ?

Это оказался единственный вопрос, ответ на к-рый я более менее знал. 

1) создать "правильную" миграцию, те такую, в которой уже есть
правильный шаблон (костяк) функции up():
php artisan make:migration change_
actual_lics_table --table=actual_lics

2) если сделан пп 1, то в функцию up() добавить всего 2 строки кода. В итоге ф-ция up() :
public function up()
{
    Schema::table('
actual_lics', function (Blueprint $table) {
        $table->string('title',150)->default(null); //1-ая добавленная строка.
        $table->date('some_date'); // 2-ая...
     });
}
3) запустить миграцию:  php artisan migrate

--------------------------------------------------------------------------------------------------------------------------

Менеджер:
хорошо, следующий вопрос...
Имеется таблица, в которой несколько столбцов (скажем 15) типа DATE. Этот тип хранится
в базе в виде yyyy-mm-dd. Нужно чтобы в приложении выводился другой вид дат(dd-mm-yyyy, dd.mm.yyyy
или какой-то другой - в целом не важно). Как бы ты это сделал на Laravel? Код писать не надо, просто мысли.

мой ответ
Везде во вьюхе, где есть вывод дат вместо {$article->created_at} написать {$article->created_at->format('dd-mm-yyyy') 
... либо пишется функция, возвращяющ дату в нужном формате..

 

ТимЛид
А если у нас много вьюх, и на каждой вьюхе даты? Писать в каждой формат?

 

мой ответ

нет... надо в модели создать функцию, типа setDateAttribute($date) которая, должна вернуть нужный формат даты...
в ней должно быть что-то типа {return ......->format('dd-mm-yyyy')}
и вывод должен быть в нужном формате...

 

ТимЛид
А если моделей с датами много? В каждой прописывать setDateAttr?

мой ответ: по идее да ...

Менеджер:

ок, хорошо, хватит обсуждения по этому вопросу.
Много потратили времени, следующий вопрос.

----------------------------------------------------------------------------------------------------------------------

PS. На этом вопросе,  тогда мне походу поставили минус :)  сегодня я знаю точный ответ :

в файле AppServiceProvider.php, добавить: 
use Carbon\Carbon;

в методе boot() , добавить строку
Carbon::setToStringFormat('d.m.Y');

И в модели таблицы прописать массив :

protected $dates = [ 'и тут указать', 'все эти', '15 дат' ];

----------------------------------------------------------------------------------------------------------------------

ТимЛид:
Есть переменная $article класса Article. В ней есть связь author на модель Author, в ней связь country
на модель Country, в ней поле name. Связи многие-к-одному и они уже прописаны в моделях. Тебе надо
достать имя страны, из которой происходит автор статьи из модели Article(переменной $article). В базе не
прописан CONSTRAINT, так что возможен вариант, когда связанной записи нету. Как бы ты достал значение
на Laravel? Тут бы можно уже код.

мой ответ:

чуть больше времени...
$author = $article->author;
$country = $article->author->country;
$countryName = ($author && $country) ?  $article->author->country->name : 'Страна автора неизвестна';

ТимЛид:
$article->author->country;
Это кинет нотайс

мой ответ:
try ($article->author->country) ...

ТимЛид:
а без try?

мой ответ:

 isset($article->author, $article->author->country);

ТимЛид:
а без isset?

мой ответ:

ну не знаю....сдаюсь...

----------------------------------------------------------------------------------------------------------------------
PS ...правильный ответ был близко - одной строкой :

$countryName = $article->author && $article->author->country ?  $article->author->country->name : null;

и это чистый PHP и этот ответ одинаков для Yii && Laravel  :(
----------------------------------------------------------------------------------------------------------------------

ТимЛид:
У меня больше вопросов нет.

Менеджер:
спасибо за твое время,
я чуть позже напишу.

----------------------------------------------------------------------------------------------------------------------

PS. На след день мне отписали, что уровень слабоват, надо еще учиться...:::(((

В этой организации при собеседовании на Yii задаются ровно те-же вопросы,

только окончание вопроса звучит - как бы ты сделал это на Yii.


Комментарии о School-PHP (0):


Напишите свой комментарий:
Имя:
E-mail:
на него отправится ответ
Skype Станислава:
напишите мой скайп
(есть внизу страницы)
Введите комментарий:

* Комментарий при отправке отправляется на пре-модерацию. Вынужденная защита от спама, чтобы сайт был чистым.

Главная БАЗОВЫЙ КУРС ПЕРВЫЙ УРОВЕНЬ программирования ВТОРОЙ УРОВЕНЬ верстки ВТОРОЙ УРОВЕНЬ программирования Начать обучение Запуск проекта Мелкие трюки Делимся практикой трудоустройства Проверь свои знания Задачи по PHP MySQL Блог Отзывы