PHP Developer задачка

Я – PHP-Developer, живу в Стокгольмі. Нещодавно був на співбесіді в один великий шведський сайт (більше мільярда page views в місяць). Інтерв’ю проводили 2 програміста з цієї фірми. У певному моменті, один з них дістав листок паперу і сказав, що пропонують мені вирішити невелику задачку (тут же на папері, без комп’ютера). І що у мене є 10 хв. Попросили так само коментувати кожен крок.

Скажу відразу, що я її не вирішив. Спочатку все начебто просто, а потім … Так що, пішов із зустрічі піймавши облизня. З мого боку вона так і залишилася невирішеною.

Навіщо публікую це? По-перше, може комусь пригодиться як хороший тест для найманих розробників; по-друге, хтось, якщо зустріне щось подібне, буде вже повний знань; по-третє, може хто-небудь помістить правильне рішення в коментах?

Нижче – сама задача. Залишаю все в оригіналі, як було.

PHP assignment
Write a function, read_conf($filename), that converts the configuration below into a multidimensional array.

The configuration is divided up in rows and each row is divided up by key and value. The key can be multidimensional, and can be from 1…N, in the example below we only have 4 levels, but the solution should be able to work even when adding another row with more key levels: eg. session.save.db.master.host=10.0.0.1

===config.txt===
id=www
session.timeout=120
session.server.0.host=127.0.0.1
session.server.0.port=1111
session.server.0.id=session1
session.server.1.host=127.0.0.1
session.server.1.port=1111
session.server.1.id=session2
image.width=640
image.height=480
image.watermark.small=wsmall.png
image.watermark.normal=wnormal.png

===code===
<?php
$res = read_conf(“config.txt”);
var_dump($res);
?>

===output===
array(3) {
[“id”]=>strong(3) “www”
[“session”]=>array(2) {
[“timeout”]=>string(3) “120”
[“server”]=>array(2) {
[0]=>
array(3) {
[“host”]=>
string(9) “127.0.0.1”
[“post”]=>
string(4) “1111”
[“id”]=>
string(8) “session1”
}
[1]=>
array(3) {
[“host”]=>
string(9) “127.0.0.1”
[“port”]=>
string(4) “1111”
[“id”]=>
string(8) “session2”
}
}
}
[“image”]=>
array(3) {
[“width”]=>
string(3) “640”
[“height”]=>
string(3) “480”
[“watermark”]=>
array(2) {
[“small”]=>
string(10) “wsmall.png”
[“normal”]=>
string(11) “wnormal.png”
}
}
}

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*