Pohovor u Yahoo
Školení, která pořádám
Nick Halstead na svém blogu zveřejnil otázky, které pokládá Yahoo programátorům, kteří se u něj ucházejí o práci a já přináším jejich překlad. Nahlížení do dokumentace nebo zkoušení kódu je samozřejmě nevhodné.
- Co z následujících příkazů nepřidá Johna do pole uživatelů?
<?php
$users[] = 'john';
array_add($users, 'john');
array_push($users, 'john');
$users ||= 'john';
?>
- Jaký je rozdíl mezi funkcemi sort, asort a ksort? Za jakých okolností použijete každou z nich?
- Co vypíše následující kód do prohlížeče? Proč?
<?php
$num = 10;
function multiply() {
$num = $num * 10;
}
multiply();
echo $num;
?>
- Jaký je rozdíl mezi referencí a běžnou proměnnou? Jak předáte proměnnou referencí a proč byste to chtěli udělat?
- Jaké funkce můžete použít pro přidání knihovního kódu do právě spuštěného skriptu?
- Jaký je rozdíl mezi
foo()
a @foo()
?
- Jak ladíte PHP aplikace?
- Co dělá
===
? Jaký je příklad něčeho, co vrátí true pro ==
ale ne pro ===
?
- Jak deklarujete třídu
myclass
bez jakýchkoliv metod a vlastností?
- Jak vytvoříte objekt, který je instancí třídy
myclass
?
- Jak přistupujete a nastavujete vlastnosti třídy zevnitř třídy?
- Jaký je rozdíl mezi include a include_once? A include a require?
- Jakou funkci použijete pro přesměrování prohlížeče na novou stránku?
<?php
redir();
header();
location();
redirect();
?>
- Jakou funkci můžete použít k otevření souboru pro čtení a psaní?
<?php
fget();
file_open();
fopen();
open_file();
?>
- Jaký je rozdíl mezi mysql_fetch_row a mysql_fetch_array?
- Co dělá následující kód? Vysvětlete, co se v něm děje.
<?php
$date = '08/26/2003';
print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)", '\\2/\\1/\\3', $date);
?>
- Když dostanete řádek textu v proměnné
$string
, jak byste napsali regulární výraz, který z něj odstraní HTML značky?
- Jaký je rozdíl mezi tím, jak rozlišuje Perl a PHP pole a asociativní pole?
- Jak můžete obejít bezstavovost protokolu HTTP s využitím PHP?
- Co dělá knihovna GD?
- Uveďte několik způsobů, jak vypsat blok HTML kódu v PHP.
- Je PHP lepší než Perl? Rozeberte.
Příští týden napíšu, jak bych odpovídal já.
Diskuse
Bednee:
Nezakladaji pobocku u nas? Ze bych se prihlasil ;). Az na ty otazky o Perlu (s kterym jsem nedelal) to neni moc slozite.
Asi bych neprošel i když se mi víc než půlka otázek zdá dost lehká, jsou otázky, které vůbec netuším...
Ondra:
Poměrně jednoduché otázky. Až na Perl s kterým nemám zkušenosti. Nejvíc bych se asi zapotil uregulárních výrazů, ale to asi více lidí :)
Pekný test. Vyzeralo to so mnou celkom dobre, ale mám nejaké medzery...
Jakub: teším sa na Tvoje odpovede.
halogan:
S PHP již velice dlouho nedělám, ale i tak bych čekal mírně odlišné (= těžší) otázky. Nicméně u takovýchto jednodušších zase člověk dobře vidí jejich způsob přemýšlení. A co se týká regexpů zmíněných výše - ty mi přijdou jako to nejjednodušší :)
Nejtěžší je ta poslední otázka, netroufal bych si na ni před skupinkou zarytých fanoušků Perlu vůbec odpovědět :-)
Jinak 17. taky není úplně triviální, ostatní mi tak připadají.
V Yahoo jsou pokud vím spíše fanoušci PHP.
Co se 17 týče, tak bys je myslím jednoduchým řešením a poukázáním na jeho nedokonalost vzhledem k větší složitosti problému myslím docela uspokojil.
qwe:
Odpověď na otázku 17 :-)
preg_replace('/^(.*)$/e', "strip_tags('$1')", $string);
ronnie:
Hm, tak to je trochu moc jednoduché, ne?:-)
Před pár týdny jsem si hledal místo jako PHP programátor. Na jednom pohovoru mi taky dávali test, měl bych ho mít někde doma, tak pokud ho o víkendu najdu, tak ho sem vložím. Byl podstatně složitější.
peCan:
Z těch 22 otázek mi přijde 17 jednoduchých a těch zbylých 5 by asi rozhodly o tom, jestli by mě vzali či nikoliv. Perl neumím a tak si rád počkám na příští týden;-)
paranoiq:
22 je celkem zapeklitá a 17 není tak jednoduchá jak se zdá. ostatní se mi zdají lehké.
Ivo Toman:
S php se bavím jen pár týdnů, ale myslím si, že na spoustu otázek bych dokázal správně odpovědět. Ale rozhodně bych si na pohovor netroufl :)
zvo:
Díky za překlad, těším se na tvé odpovědi.
Tomáš Kučera:
Moje programátorské znalosti jsou sice bídné, ale leccos z toho jsem věděl :) Polovina otázek je relativně jednoduchá.
Frodik:
Předpokládám, že tento test měl jediný účel a tím vyloučit úplné amatéry a poté následoval opravdový test :-) A podle toho co vím o přijímacím procesu ve společnostech podobných Yahoo, tak správné odpovědi na "programátorské" otázky rozhodují o přijetí asi tak z jedné třetiny, či poloviny.
LLook:
V původním článku vidím, že jsou to "pre-interview" otázky. Takže na odpovědích závisí jenom to, jestli vás vůbec pozvou na pohovor. Asi aby odfiltrovali ty, kteří "trochu umí PHP"...
Krom toho, zdaleka nejdůležitější podle mě budou otázky 7, 11 a 19. Možná ještě 22, když se projevíte jako nekritický fanatik (PHP rulezzzz, Perl suxxxx), tak to asi nebude to nejlepší.
lacop:
no vedel som skoro vsetko (okrem Perlu), ale uvidime ci to aj bolo dobre :)
jan vrana:
No pro mne by byla naprosto znicujici otazka cislo 2.
Priznam se ze za 8. let denniho programovani v PHP jsem funkci sort a jeji obdoby, snad ani nepouzil. Tudiz nevidim duvod proc si je pamatovat.
Jencek:
Děkuji, že aspoň někdo. Programuju výhradně pro DB a tam si řadím pomocí SQL. Tyto funkce jsem v životě nepoužil.
Jakub Vrána :
Já je použil třeba v případě, kdy mi část dat připluje z databáze, čas z webové služby a musím je seřadit podle různých kritérií.
piler:
Ja som dostal na jednom pohovore otazku: "Aky je rozdiel medzi CHAR a VARCHAR v databaze?". :))) Viete, aky je rozdiel?
Jakub Vrána :
Základní rozdíl je ten, že char(20) uloží vždy 20 znaků (doplní mezerami), kdyžto varchar(20) uloží jen tolik znaků, kolik řetězec skutečně má. Ale třeba s implementací v MySQL by to vydalo na povídání na několik minut...
piler:
V MySQL: nedal by sa nacrtnut v kratkosti problem? Celkom ma to zaujima ;)
jan vrana:
CHAR je fixni rozmer pole zabira vzdy stejny pocet bajtu.
VARCHAR zabira nejmensi mozny pocet bajtu.
CHAR(10) = "HESLO "
VARCHAR(10) = "HESLO"
Vyhodou VARCHAR je ze setri misto na disku.
V pripade ze mate pevnou delku zaznamu u CHAR, tak u 50te polozky vyte ze lezi na 50*10 bajtu souboru. Cily zpracovani tabulek s fixnimy datovymi tipy by melo byt rychlejsi.
U mysql je nutno davat pozor na to ze pokud se v tabulce objevi jedina polozka dinamicka prevede vsechny ostatni na dinamicke.
Jakub Vrána :
VARCHAR místo nutně šetřit nemusí, např. hash s délkou 32 znaků je úspornější uložit do CHAR. S implementací v MySQL to je ještě trošku složitější - viz uvedené odkazy - jednak záleží na verzi MySQL, jednak konverze probíhají v závislosti na délce větší nebo menší než tři znaky na CHAR i VARCHAR a jednak je potřeba dát pozor na práci s koncovými mezerami (zase v závislosti na verzi).
Jan Vrana:
No jo jeden byte ktery urcuje delku zaznamu :)
Takze VARCHAR setri misto v pouze v pripade zaznamu jehoz delka-1byte < velikost pouziteho charu.
takze pro ulozeni polozek do jednoho sloupce ktere maji 3 nebo 4 znaky nema smysl pouzit varchar ani v pripade ze 99% polozek ma 3 znaky.
Jakub Vrána :
Zase pozor na přesnost - od MySQL 5.0.3 může být délka uložena do dvou bajtů...
Zero:
Ja som presne taku istu otazku dostal na statniciach... profak co mi ju polozil, mal problem aby nevybuchol smiechom... XD
Suchý:
Tak ta otázka s Perlem je asi nejjednoduší:
Odpoved: Ne.
Rozebrat? Tak namátkou
http://tnx.nl/php, nebo už jenom otázka č. 2.
Ondra:
Tak to si nejsem jisty. Ta otazka je nepochybne zamerne polozena takhle jednoduse az primitivne, protoze odpoved na ni zas tak jednoducha neni. Vtip te otazky je prave v tom, ze se pta na neco, co nema presnou definici a na co je treba pohlizet z mnoha ruznych uhlu.
Pokud tvrdis, ze Perl je lepsi, pak lze snadno kontrovat otazkou, proc se - ve srovnani s PHP - jiz temer prestal pouzivat pro dynamicke weby. Tady se zjevne projevily urcite prednosti PHP, ktere Perl postrada.
Bilbo:
Asi tak. Jak na co. Na spoustu veci je perl lepsi (napr. zpracovani textu), na neco je zas lepsi PHP (treba ty weby ...). V obojim jde udelat vsechno, otazkou je jen jak moc slozite :)
hexx:
netrvdil by som ze sa prestal pouzivat, 20 straniek s najvyssim traffic su postavene ne perl, len tak mimochodom.
Jakub Vrána :
Můžeš je vyjmenovat nebo poskytnout alespoň odkaz na zdroj této informace?
MiSHAK:
Teďka uvažuji o smyslu výšky, když tohle znám nějaký ten pátek...
Jakub Vrána :
Vysoká ti dá něco jiného - tedy alespoň mě dala především přehled o algoritmech, složitosti, datových strukturách, ... Praxi je lepší hledat v praxi.
Ondra:
No jestli nemas vetsi ambice nez se stat PHP programatorem, tak pro tebe VS asi opravdu smysl nema. Jestli me VS neco naucila, tak to je schopnost divat se na veci v mnohem vetsi siri nez jen pohledem bezneho programatora (podle me zkusenosti casto dost omezenym).
Praxe je to, co cloveka uci hlubokym znalostem, bez nichz by ani nemohl svou praci rozumne vykonavat, siroke znalosti je ale lepsi - a hlavne snazsi - ziskavat spise studiem.
finc:
jj, je to pekne :)
Vzdycky mi prislo zbytecne se ucit nektere veci nazpamet, napr. otazka cislo 2 je vylozene zalezitost manualu. Jak casto metodu sort pouziji?
Jinak otazku cislo 8 povazuji za naprosto zasadni.
Bohuzel, tento test nijak neukaze, jak programator navrhuje kod, coz ve finale stejne byva zasadnejsi (alespon u vetsich projektu), nez zda pouzije "mysql_fetch_row ci mysql_fetch_array" :)
P.S.: Asi jsem jedinej PHP lamer, ale na spoustu otazek hned opoved proste nevim. :) Jeste, ze do Yahoo nepodavam prihlasku a mam k dispozici google a manual :)
A k te 22. Proc je PHP lepsi nez Perl? Protoze Perl je jen "sum na lince" :)
ivan_d:
to finc: 'otazka cislo 2 je vylozene zalezitost manualu' - přesně to mě napadlo. Mimochodem ksort a asort jsem ještě nikdy nepotřeboval (možná jsem jen neviděl možnost výhodně využít - asociativní pole a pole vnímám odděleně a používám každé pro jiné účely - nemá někdo nějaký případ?).
Celý ten test je pro mě trochu zvláštní a zajímalo by mě, jak to hodnotí - některé by pro mě měli mnohem větší váhu (7) než jiné (15).
Pavel:
to finc: na mnoho otázek také nevím hned odpověď, ale nejsem programátor, jen si umím zbastlit nějaký ten kod. Pro skutečnou práci by to chtělo více treningu :)
D1ce:
Až na pár výjimek mi otázky nepřipadají těžké. Sortovací fce jsem ve svých počinech také nikdy nepoužil. Kdybych neplodil na fórech, nikdy bych si je nevyzkoušel.
Jinak by mě zajímalo, jaké je minimum pro úspěšné splnění testu.
Já bych zkoušel zájemce z používání gůgla, manuálu, fóra a rapid-application-pasting(RAP) ;) .
Jakub Vrána :
Řekl bych, že minimum pro splnění testu (tedy pro připuštění ke skutečnému pohovoru) je zodpovězení všech otázek - ony jsou skutečně dost základní. U některých (např. 2, 17) asi nebude nutná zcela přesná odpověď, ale třeba vědět, že v PHP jsou funkce na třídění pole jak podle klíče, tak podle hodnoty, tak se zachováním indexů by to vědět chtělo.
Navíc to není nějaký normovaný test, zveřejnil to kamarád jednoho uchazeče, takže otázky o Perlu tam jsou možná jen proto, že uchazeč uvedl, že dřív pracoval v Perlu.
Bilbo:
Pokud se neco taha z databaze, tak rovnou pouziju ".. order by ...", takze sort primo v PHP se asi tak moc neuzije...
Jakub:
Po přečtení některých otázek jsem si uvědomil, že asi nechci pracovat v Jahů :)
Jarda Jirava:
Ač v PHP téměř nedělám, otázky mě zajímaly. Přečetl jsem jich několik a věděl jsem, že tohle by pro mě skutečně nebylo. Nejspíše bych dobrovolně odešel, nikoliv však díky neznalosti odpovědí, ale spíše z důvodu formy položených otázek, které mi připadají zaměřené jen na "bušiče" kódu.
Přitom při pohovoru mě více zajímá to, jak uchazeč dokáže uvažovat, jakým způsobem se dobere cíle a řeší zadaný úkol, než to, jestli zná syntax konkrétní metody.
Je možné, že pro firmu jakou je yahoo se tento postup osvědčil, nebo jenom shánějí již vzpomínané "bušiče"(?).
Díky
Jakub Vrána :
Jak je zmíněno v originálním článku a několikrát i zde v diskusi, jde pouze o předpohovorový test - síto na lidi s alespoň základními znalostmi. K Yahoo se hlásí tolik lidí, že nepotřebují na pozici PHP programátora někoho bez základních znalostí, i kdyby byl v jiných oblastech hodně dobrý. A jak jsem psal - já osobně bych nepožadoval přesnou odpověď na všechny otázky, ale alespoň základní povědomí o oblasti.
Jarda Jirava:
Je celkem škoda, že není uvedeno, kolik % lidí se tímto sítem vlastně proseje. Zkusím si malinko zaspekulovat, snad mi bude odpuštěno.
Když vím, že jdu do firmy na pozici PHP programátora, nejspíše PHP budu alespoň trošku znát (no nátura každého je trošku jiná). Začátečník si navíc spíše ještě něco přečte a těch metod není zase tolik, aby si jejich význam nezapamatoval. Ti zkušení a zdatní naopak mohou mít problémy, protože používají nějakou nadstavbu, své funkce, které obalují rutinní činnosti, tudíž na takovýchto otázkách mohou propadnout.
Alespoň z mého pohledu by bylo vhodnější se ptát třeba nějak takto:
Jaké jsou začátečnické chyby v PHP. Jaké jsou nejčastější chyby a jak jste se jich vyvaroval/snažil se jim předejít. Pokud chcete udělat to a to, jaký postup použijete/se vám zdá optimální.
Jasně, není to už jenom o tom, přiřadit jednotlivým odpovědím váhu a body a ty poté sečíst a mám lidi nad a pod čarou, mohu tak však lépe prosít začátečníka od zkušeného/pokročilého.
Vše se však odvíjí od první věty, jaká je skutečná úspěšnost a pokud to takto dělají, nejspíše bude hodně vysoká - což jim nezávidím a vycházejíc z mé spekulace, mohou přicházet o zkušené lidi.
Díky
error414:
takze pokud jsem neznal co delaji funkce sort, ksor, asort. Jen jsem vedel ze radi pole , tak mam nedostatky v zakladech PHP?
Jakub Vrána :
Vždyť to je napsané přímo v komentáři, na který reaguješ - osobně bych nepožadoval 100% správnou odpověď na všechny otázky. Kdybys mi třeba řekl, že asort by mohlo být možná k tomu, že bude pole řadit voláním uživatelsky definované funkce, tak bych tě poslal dál. Ale mít základní pojem o tom, na co všechno má PHP zabudované funkce, patří myslím k základům.
mj41:
18) Jaký je rozdíl mezi tím, jak rozlišuje Perl a PHP pole a asociativní pole?
V Perlu je pole a asociativní pole (hash) něco úplně jiného. Z pohledu implementace jsou to rovněž zcela rozdílné věci. V Perlu na první pohled poznáte zda se jedná o pole nebo hash.
Perl 5:
my %veci = (
'kolo' => 'moje nová Merida',
'auto' => 'Honda'
);
my @veci = ( 'kolo', 'auto' );
push @veci, 'kolo';
@veci[3] = 'auto';
print $veci[2]; print $veci{'kolo'};
Perl 6:
print @veci[2]; print %veci<kolo>;
Druhý zásadní rozdíl je že hash v PHP si pamatuje pořadí vkládání prvků. Tohle je občas výhoda, protože interátory hash defaultně prochází v tomto pořadí. U Perlu si musíte vytvořit pomocné pole. Na druhou stranu jsem zatím nepřišel na to jak toto pořadí v PHP změnit.
Něco do pranice: Předpokládám, že Perl má rychlejší implementaci jak polí tak hashů :-).
ivan_d:
Rozdíl mezi polem a asociativním polem dělá i například python: ['prvni', 'druhe'] {'prvni': 'a', 'druhe':'b'}. Bez nějakých hádek a cachrání se: už to někdo s výhodou využil?
dgx:
Už několikrát se mi hodilo, že v PHP lze "pojmenovat" prvky pole (tj. zaměnit pole a hash), párkrát bych ocenil existenci funkce, která by rozhodla, zda je v proměnné klasické pole nebo hash, a párkrát jsem také narazil na případ, kdy program chyboval na tom, že pořadí prvků v poli nemusí být setříděné podle indexu.
Pokud si je toho člověk vědom, může použít funkci array_values nebo ksort a případným problémům se vyhnout. Pak už zůstavají víceméně jen výhody.
ivan_d:
něco jako $a['dulezite'] = $a[3] nebo jsem mimo? Je možný drobný příklad?
dgx:
Ano, třeba:
<?php
$arr = array(1, 8, 9, 31, 12, 'var' => 17, 64, 9);
echo array_sum($arr);
$arr['var'] = 22; // změním konkrétní prvek
echo array_sum($arr);
?>
I když technicky je to obdoba
<?php
define('VAR', 5);
$arr[VAR] = 22;
?>
ivan_d:
Nějak mi uniká výhoda. Někde musím rozhodnout, který prvek bude onen významný - buď při sestavování pole nebo při hledání prvku. Osobně bych se přiklonil k té variantě s kontantou (nebo něčím podobným). Asi by to chtělo širší kontext (reálný problém) - ale už teď jsme asi offtopic...
dgx:
To byla čistě odpověď na otázku "už to někdo s výhodou využil?" - ano, už jo :-)
mj41:
Využil? No co takhle rychlost a paměťové nároky. Pokud tomu rozumím dobře tak PHP skutečné pole neumí. Umí jen hashe (asociativní pole, slovníky). Pak rychlost hledání podle indexu není jako u skutečného pole O(1), ale O(lg n) až O(n).
Jak se tedy pracuje s velkými poli (miliony prvnků) v PHP?
Ještě připojím
http://spyced.blogspot.com/2005/06/why-php-sucks.html
Jakub Vrána :
Rychlost vyhledávání v hash tabulce je v průměrném případě O(1), pouze v nejhorším případě to je O(n) a ten může nastat jen při použití špatné hashovací funkce nebo záměrném hledání kolizních indexů.
Co se odkazovaného článku týče, jeho autorovi bohužel chybí informace o tom, jak PHP vevnitř funguje. Např. kopírování i velkých struktur je v PHP velice rychlá operace (když už jsme u té složitosti, tak je to O(1)) - viz např. http://www.dgx.cz/trine/item/php-puvab-optimalizace-rychlosti. V některých věcech má nicméně pravdu.
mj41:
Tohle jsem opravdu napsal špatně :-(. Viz.
http://en.wikipedia.org/wiki/Balanced_tree
, pokud PHP používá opravdu Self-balancing binary search tree.
Já myslel, že ten případ nastane vždy pro velký počet záznamů, protože zde vždy vznikají kolizní indexy.
Každopádně je hash vždy pomalejší než klasické pole, ale možná mě zase jen klame intuice :-).
Kyosuke:
Když chci seřazené mapování, použiju strom, ne?
mj41:
22) Je PHP lepší než Perl? Rozeberte.
PHP je neskutečný bastl. Nikdy jsem nepochopil jak se mu mohlo povést takhle se rozšířit. Ale v Perlu už dělám hrozně dlouho, takže nedokážu posoudit jeho nevýhody. Možná práce s referencemi, ta mi dala občas zabrat a v některých případech defaultní chování (nutnost použít dereference, správný kontext). Asi to bylo, ale hlavně jednoduchostí použití na webu, když Perl zaspal a mod_perl byl v plenkách. Fakt už něvjym.
PHP mě živí nějaký ten pátek a občas se z toho probouzím zpocený nebo v záchvatu vzteku buším hlavou do zdi :-).
Teď vážně. Co vám při přechodu z Perlu bude vadit dnes a denně?
* nemožnost "definovat" proměnné (use strict; my $moje_p;)
* jeden velký jmenný prostor
* static (lexical) scoping
* občas další skřeky a seky aneb mé staré poznámky (tuším php 4.3)
<?php
$record_set->MoveNext;
# takhle to nepůjde, chybí ()
$str = 0;
if ( $str == "a" ) echo "rovnaji se\n";
# zlaté == a eq v Perlu
if ( !rs ) echo 'aaa';
# php neřve
# existují fukce uc a ucfirst, ale jen lc, lcfirst hledáte zbytečně
# Tohle taky ujde. K čemu je operátor % dobrý?
$rodne_cislo_base = '8010163810';
$rodne_cislo = $rodne_cislo_base;
t( "%:" . ($rodne_cislo % 11) ); # %:1
t( 'fmod:' . fmod($rodno_cislo, 11) ); # fmod:0
$rodne_cislo = (float)$rodne_cislo_base;
t( "%:" . ($rodne_cislo % 11) ); # %:-8
t( "fmod:" . fmod($rodne_cislo, 11) ); # % fmod:0
?>
* nic neříkajíci error hlášky
* cpan.org
* http://tnx.nl/php
* kvalita kódu, nejen toto: http://www.internetnews.com/stats/article.php/3589361
finc:
Kazdy, kdo zacne porovnavat dva jazyky mezi sebou, nalezne mezery mezi jednotlivymi jazyky. Me treba vadila absence typove kontroly, tak jsem utekl k Jave. A ejhle objevil jsem nove moznosti a nove prekazky, ktere by me v PHP nepotkali.
Pritom porovnani je to vzdy, az prilis, subjektivni nazor a pak z toho vznikaji flamewary :)
Jinak jeste k tomu testu. Asi bych vazne u tohoto pohorel. Nektere veci jsou az prilis trivialni, nektere prilis vazane na PHP. To si myslim, ze je ta nejvetsi chyba. Pokud najmu programatora, najmu cloveka, ktery se bude schopen naucit programovat i v jinych jazycich a proto by me spise zajimala jeho analyticka schopnost, to jak by resil dane problemy.
U yahoo je to asi jedno, skutecne jim nejspise jde jen o PHP programatora, ktereho, pokud prejdou na jinou technologii nejspise propusti :)
Navic v dobe, kdy je tolik v mode pouziti frameworku a predpokladam, ze i yahoo nejaky ten svuj ma, tak je vetsina otazek naprosto k nicemu :) Vubec nevim, jestli ten clovek vi, co je OOP, coz je pro vetsi projekt mnohem dulezitejsi. Mozna pri tom prvnim vyberu vyhodi schopne a nadejne programatory a necha si bandu lameru, co se uci PHP manual po nocich :)
Jakub Vrána :
Ještě jednou napíšu, že se jedná pouze o test pro připuštění ke skutečnému pohovoru, kde se těm tématům, o kterých píšeš, jistě věnují. Řeknu to takhle: proč by Yahoo mělo na projekt v PHP brát někoho bez základních znalostí PHP, když i mezi tím zbytkem je dost vhodných uchazečů? A ještě jednou napíšu, že "základní znalost PHP" nemusí znamenat splnění testu na 100 %.
D1ce:
Jen doplnění pro ty, které výsledky operátoru % také zmátly. Přestože jsem žádnou podobnou zmínku přímo v manuálu nenašel, komentátoři chování % přisuzují tomu, že správně pracuje jen s datovým typem int .
Ondra:
Jo, hochu, to ze PHP dela jakesi implicitni konverze mezi typy, mozna oceni zacatecnik, ale pri poradnem programovani je to cesta do pekel. Pouzivat napr. aritmeticke operatory na retezec proste nedava viditelne zrejmy vysledek, takze je v kazdem pripade vhodnejsi se tomu vyhnout a provadet explicitni pretypovani.
V PHP se da psat i dobry kod, ale musi se to umet. Spatny kod se da napsat v libovolnem jazyce, a svalovat to na ten jazyk samotny neni uplne fer - byt v pripade PHP uznavam, ze to nekterymi svymi vlastnostmi az nezdrave usnadnuje :-)
Jakub Vrána :
Dynamické typování v PHP v podstatě musí být proto, že všechna data od uživatele přijdou jako řetězce. V tomto kontextu se automatické přetypování dá také smysluplně využít ($_GET["vek"] < 18).
SendiMyrkr:
A opravdu to přetypuje tak, ze lze pak použít následující?:
if($_GET["vek"] === 18){
//neco...
}
Já osobně používám u všeho u čeho vyžaduji číslo zápis:
$vek=(int)$_GET["vek"];
Jakub Vrána :
Porovnání přetypuje hodnotu jen pro tu konkrétní operaci, proměnná zůstane samozřejmě nedotčena.
Llaik:
Obávám se, že tento test je úplně naprd :)
Ne opravdu, je to na základní přehled, ale po vyhodnocení vůbec nepoznáte, zda má uchazeč v hlavě mozek, nebo knížku o PHP.
Jakub Vrána :
Přítomnost mozku v hlavě se zjistí na pohovoru, ke kterému je splnění tohoto testu teprve vstupenkou. Zaznělo to tu už několikrát.
Ondra:
Bože muj. To je jak na písemce ve škole.
K čemu mám vědět rozdíly mezi sort, asort a ksort, když je to napsané v dokumentaci? Stejně ve výsledku mám úlohu a hledám řešení, a i kdyby do PHP nacpali třeba bflmsort_cities_by_weather(), tak nepokryje všechny problémy.
Reference - snad už tenhle paskvil konečně PHP někdy opustí a spolehne se na reference na objekty jako Java, kterou PHP beztak kopíruje.
17 - tak to je konec :) Pokud bych chtěl z HTML dostat značky, tak bych asi nešel do PCRE, ale do HMTL parseru.
David:
Nabízím práci prom PHP programátora?
Někdo zájem?
david@ksearch.cz
Diskuse je zrušena z důvodu spamu.