インタビューの質問ミドル/シニアiOS開発者

私たちは皆、インタビューに行きました。 毎回、次のインタビューに備えて、主なトピックを確認し、前回質問した質問、または自分自身が質問したことを思い出します。 以下では、ミドル/シニアiOS開発者の地位に関するインタビューから(個人的な経験に基づいて)しばしば得られる主な質問を紹介します。 いわば、チートシートです。 同時に、プラットフォームの知識レベルを確認できます。



全般:

-抽象クラスはインターフェースとどう違うのですか?

-MVCパターンについて教えてください。 パッシブモデルとアクティブモデルの違いは何ですか?

-ARCおよび非ARCでのシングルトンの実装?

-他にどのようなパターンを知っていますか?

-C ++で行を展開するコードを記述します。



ネットワーキングとマルチスレッド:

-デッドロックとは何ですか?

-ライブロックとは何ですか?

-セマフォとは何ですか?

-ミューテックスとは何ですか?

-非同期とマルチスレッド。 違いは何ですか?

-同期接続と非同期接続の長所と短所は?

-http、tcpとはどういう意味ですか?

-HEAD、GET、POST、PUTの違いは何ですか?

-iOSのどのテクノロジーを使用してストリームを操作できますか。 長所と短所。

-dispatch_asyncとdispatch_syncの違いは何ですか?

-「Hello world」はデバッガーに表示されますか? なんで?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"Hello world"); }); /* Another implementation */ return YES; }
      
      





-コンソールには何が表示されますか?

  NSObject *object = [NSObject new]; dispatch_async(dispatch_get_main_queue(), ^ { NSLog(@"A %d", [object retainCount]); dispatch_async(dispatch_get_main_queue(), ^ { NSLog(@"B %d", [object retainCount]); }); NSLog(@"C %d", [object retainCount]); }); NSLog(@"D %d", [object retainCount]);
      
      





CoreData:

-コアデータとは

-どのような場合にSQLiteを使用したほうがよいですか。どのコアデータを使用しますか?

-管理対象オブジェクトコンテキストとは何ですか?

-永続ストアコーディネーターとは何ですか?

-異なるストリームでコアデータを使用する場合のニュアンスは何ですか? スレッド間でデータを同期する方法は?

-NSFetchedResultsControllerが使用されましたか? なんで?



Objective-c

-iOSのルートクラスとは何ですか? ルートクラスとは何ですか?

-isaポインターとは何ですか? それは何のためですか?

-メソッドが呼び出されたクラスオブジェクトで見つからなかった後、メソッドはどうなりますか?

-カテゴリと拡張機能(拡張機能、名前のないカテゴリ)との違いは何ですか?

-ivarをカテゴリに追加できますか?

-カテゴリを使用するほうが適切な場合と、継承する場合

-デラゲートと通知の使用の違いは何ですか?

-iOSの手動メモリ管理はどうですか?

-自動リリース対リリース?

-ARCの意味?

-プロジェクトがARCを使用して記述されており、ARCなしで記述されたサードパーティライブラリのクラスを使用する必要がある場合はどうなりますか?

-弱いvs割り当てる、強いvsコピー?

-アトミックvs非アトミック。 違いは何ですか? 非ARCコードでアトミック/非アトミックセッターを手動でオーバーライドする方法は?

-強力な/デリゲートを保持するすべてのプロパティを参照する理由。 :)))

-自動解放プールとは何ですか?

-C ++で自動解放プールを実装するにはどうすればよいですか?

-NSSetとNSArrayの違いは何ですか? NSSetではどの操作が迅速に行われ、NSArrayではどの操作が行われますか?

-正式プロトコルと非公式プロトコル。

-Objective-Cにプライベートまたは保護されたメソッドはありますか?

-多重継承を模倣する方法は?

-KVOとは何ですか? いつ使うべきですか?

-KVCとは何ですか? いつ使うべきですか?

-ブロックとは何ですか? なぜ必要なのですか?

-いつブロックをコピーする必要がありますか? これに責任を負うのは誰ですか:発信者または受信者?

-指定された初期化子とは何ですか?

-このコードの何が問題になっていますか? 初期化子が必要なのはなぜですか?

 [[[SomeClass alloc] init] init];
      
      





-ループの反復中にオブジェクトを削除する方法は?

-タイマーは機能しますか? なんで?

 void startTimer(void *threadId) { [NSTimer scheduleTimerWithTimeInterval:10.0f target:aTarget selector:@selector(tick: ) userInfo:nil repeats:NO]; } pthread_create(&thread, NULL, startTimer, (void *)t);
      
      





-クラスAとクラスBのどちらのメソッドが呼び出されますか? クラスAメソッドが呼び出されるようにコードを変更する方法は?

 @interface A : NSObject - (void)someMethod; @end @implementation A - (void)someMethod { NSLog(@"This is class A"); } @end @interface B : A @end @implementation B - (void)someMethod { NSLog(@"This is class B"); } @end @interface C : NSObject @end @implementation C - (void)method { A *a = [B new]; [a someMethod]; } @end
      
      





-どのような場合に、強い文字列を使用した方がよいでしょうか。また、NSStringのどのコピーを使用しますか なんで?

 @property (nonatomic, strong) NSString *someString; @property (nonatomic, copy) NSString *anotherString;
      
      





-コンソールには何が表示されますか? なんで?

 - (BOOL)objectsCount { NSMutableArray *array = [NSMutableArray new]; for (NSInteger i = 0; i < 1024; i++) { [array addObject:[NSNumber numberWithInt:i]]; } return array.count; } - (void)someMethod { if ([self objectsCount]) { NSLog(@"has objects"); } else { NSLog(@"no objects"); } }
      
      





UIKit:

-実行ループとは何ですか?

-フレームと境界の違いは何ですか?

-レスポンダーチェーンとは何ですか?

-performSelector:withObject:afterDelay:を呼び出すと、メッセージは保持されてオブジェクトに送信されますか?

-アプリケーションの条件は何ですか?

-プッシュ通知はどのように機能しますか?

-UIViewControllerのライフサイクル?

-メモリの処理はどのように警告しますか? 処理はiOSのバージョンに依存しますか?

-(キャッシュから)ディスクからUIImageをロードする最良の方法は何ですか?

-どのコンテンツがドキュメントに最適に保存され、どのコンテンツがキャッシュに保存されますか?



また、インタビューでどのような質問をしましたか?

PSこの資料の準備を支援してくれたVasily Mironchukに感謝します。



All Articles