Ad Network

あわせて読みたい

  • あわせて読みたい

« 今週の週刊 Life is Beautiful:8月7日号 | Main | 市場原理と環境保護という二つの力が、米国を脱原発へと向かわせている »

ザッカーバーグの面接試験:Objective-C のブロックを使いこなす

Facebook もようやくモバイルの重要性を認識したらしく、スマートフォン・アプリの開発経験者を募集している。そこで、「私が Facebook の面接官だったら」という仮定のもとに試験問題を作ってみた。iOS 未経験者がいきなり解くのは無理だが、「iPhone アプリならば毎日のようにバリバリと書いています」と主張するエンジニアの実力のほどを計るのに程よい問題だ。

問題

iOSでは、HTTP 経由でデータをサーバーから取得する場合、NSURLConnection を使います。しかし、一つのコントローラーから複数の HTTP リクエストを同時に発行する必要がある場合、コントローラー自身を delegate にして複数の NSURLConnection で共有すると、プログラムの可読性がどうしても落ちてしまいます。そこで、可読性を増すために、ブロックを活用した HTTPLoader というヘルパークラスを作ることにしました。使い方はこんな感じです。

        NSURLRequest* request = ...
[HTTPLoader loadAsync:request
complete:^(NSData* data, NSError *error) {
if (data) {
// Success: process the data
} else {
// Error: process the error
}
}];

そこで問題です。

HTTPLoader を実装してください(ただし、iOS 4.x 上でも動くように iOS 5.0 で追加された機能は使わないでください。また、紙の上ではなく、xCode を使って実際に動作確認しながら作って下さい) 。実装はできるだけシンプルに、ただし、並行して同時に複数の HTTP リクエストが処理できるように配慮して実装してください。また、このクラスを使う場合の注意点も記述してください。

(制限時間45分)

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d8341c4f9853ef01676921b55f970b

Listed below are links to weblogs that reference ザッカーバーグの面接試験:Objective-C のブロックを使いこなす:

Comments

Yomoapp

書いてみました。
45分で終わりませんでした。

http://bit.ly/P4WAs1

岸川克己

https://gist.github.com/3293117

書いてみました。
クラスを使う場合の注意点は、リクエストのキャンセルはできないことと、ARCを利用していること、です。

Yanamura3

書いてみました。
GCD禁止のほうがいいかもしれません
https://github.com/yanamura3/HTTPLoader

Post a comment

This weblog only allows comments from registered users. To comment, please Sign In.