yahoo入社試験(PHP) 突然プログラマなブログ

今日ふらっとネットをしていたら、PHPがなんだか馬鹿にされがちなことに気付いた。
僕はPHPは現実主義的ですばらしいと思うけどね。perlとかrubyなんて親戚みたいなもんなのに、向こうからしてみればPHPと同類にはされたくないらしい。言語論争おそろし。
宣言ばかりでなかなか前に進めないjavaとかよりいいと思うけどね。早くできて、過激な仕様変更に耐えりゃいいんだよ。
あと、OOのサポートがあとづけで見苦しいといっても、コードの再利用性を損なうようほどに酷くはない。十分にOO的に柔軟にできるよ。フレームワークも揃ってるしね(僕は自作フレームワーク+smartyだけど)。

で、

http://d.hatena.ne.jp/shimooka/20070524/1179984297
これやってみた。素でやったので答えとかはしらない。

1.配列usersに「john」を追加しないのはどれか?

4かなぁ

2.sort(), assort(), ksort()の違いを述べよ。また、どういった状況で利用するかを述べよ。

sort()は値でソート。assort()はわすれた(逆順?)。ksort()はキーでソート。

3. 以下のコードは何を出力するか?それはなぜか?

なにも出力しない。スコープ内でちゃんと初期化していないので。

4. 参照と通常の変数の違いを述べよ。また、どのように参照渡しをするか、なぜそうするかを述べよ。

PHPのばあい参照で作った変数と元に差はない。値を変更すると共有している変数両方がかきかわる。
渡した先で値を変更したいか、大きなデータを渡す時は参照渡し。

5. 実行中のスクリプトにライブラリコードを追加する関数は何か?

質問の意味がよくわかりません。。

6. foo() と @foo()の違いを述べよ。

@つけるとエラーを返さない

7. あなたがどのようにPHPアプリをデバッグしているかを述べよ。

var_dump

8. 「===」は何をするか? 「==」がtrueを返し「===」がtrueを返さないサンプルを示せ。

===は暗黙の型変換をしない。'001' == 1、'001' === 1

9. メソッドやプロパティを持たないクラス「myclass」はどのように宣言するかを示せ。
10. 「myclass」のインスタンスをどうやって生成するかを述べよ。

えっそんなのあったの?調べよ ←追記:プロトタイプ型言語みたいに動的にメソッド追加できるのかと勘違いしてしまった。うほ。普通にクラス宣言なら普通にわかる。

11. どうやってクラスのプロパティにアクセスしたり値を設定するかを述べよ。

$foo->aa

12. includeとinclude_onceの違いを述べよ。また、includeとrequireの違いを述べよ。

わかりますが面倒になってきたので答えませんw

13. ブラウザに新しいページにリダイレクトさせるための関数は何か?

header

14. ファイルを読み書きするため、ファイルを「開く」関数どれか?

fopen

15. mysql_fetch_row()とmysql_fetch_array()の違いを述べよ。

fetch_row()は配列、fetch_array()はキーにカラム名のハッシュ? いつも隠蔽してつかっているのでわすれた。

16. 以下のコードは何をするか?起こっていることを説明せよ。

月と日をいれかえる

17. $stringにテキストが代入されているとき、HTMLタグを全て除去する正規表現はどのように書けば良いか?

$out=preg_replace("/<.+?>/","",$string);

18. PHPPerlにおいて、配列とハッシュの扱い方の違いを述べよ。

PHPはハッシュと配列が同一の扱い。
perlは違ったとおもうけど使ってないのでよく覚えていない。

19. HTTPのステートレスな性質を避ける方法を述べよ。

cookieとか。

20. GDライブラリは何をするかを述べよ。

画像生成

22. PHPPerlより優れているか、論じよ。

さあ?

さらに蛇足だけど、これ以上PHPJava化はやめてほしい。他に似た例(徐々に静的型言語としての性質を帯びてくる)としてactionscriptがある。これは3.0になって一気に互換性を捨てて綺麗になったけど、柔軟性を失ったと思う。あれはもうECMA Scriptではない。