中/上級レベルでのObjective-Cの質問

中間/上級レベルでオブジェクト開発者は何を知っているべきですか?
残念ながら、垂直型開発には明確な線がありません。 それは逆説ですが、何を勉強するのかを知るには、知らないことを知る必要があります。
私はさまざまなインタビューで私自身に尋ねられた最も興味深い質問を思い出そうとし、また自分からの(同じレベルでの)多くの質問でそれらを拡大しました。
IoC、デザインパターン、SOLIDなどの一般的な質問はありません。

注意!!!
垂直開発に加えて、水平も重要です

注意!!! (2)
コメントに質問への回答を書かないでください。これにより、人々は自分でそれを理解することができます。
ただし、トピックに関する興味深い質問がある場合は、喜んでリストに追加します。

もちろん、これはライブコミュニケーションに取って代わるものではありませんが、面接に十分に備えることができます。


はじめに



void *とは何ですか?
voidはどういう意味ですか?

void *とidの違いは何ですか?

idとは何ですか?
idはどのように定義されますか?
構造を作成してidにキャストすることは可能ですか?

id vs instancetype

ルートクラスとはどういう意味ですか?
ルートクラスを作成できますか?
NSObjectとNSProxy以外にどのようなルートクラスがありますか?

NSProxyの代わりにNSObjectを使用することは可能ですか?
答えが「はい」の場合、なぜNSProxyが必要なのですか?

オブジェクトへのポインタはobjcでどのように整列しますか?
この理由は何ですか?
データの保存時にこれに関連する最適化は何ですか?
なぜ実装できないのですか?

ブリッジとは何ですか、なぜ必要なのですか?

これらの方法はすべて有効ですか? そうでない場合、どれを、なぜですか?
- (instancetype)initMyObj { self = nil; return self; } - (instancetype)initmyObj { self = nil; return self; } - (instancetype)myObj { self = nil; return self; } 


メタクラスとは何ですか?

objc_msgSend、この関数は何ですか?
これは[obj foo]とどのように関連していますか? 他にどんな関連機能がありますか?

ディスパッチテーブルとは何ですか?

メッセージはどのように送信されますか?
メッセージは常に同じ速度で送信されますか?

メソッドがディスパッチテーブルで見つからない場合はどうなりますか?

objcにプライベートメソッドはありますか?
パブリックインターフェイスで宣言されていないメソッドをテストする方法

メッセージを送信する例外、誰が投げますか?
NSInvocationとは何ですか。 使用例を挙げてください

スウィズルとは何ですか?

カテゴリを介してプライベートivarをプロパティとして作成することはできますか?
どのような問題がありますか?
カテゴリにあなたの財産を作る方法?

セレクターメソッドによってブロックが呼び出されないようにする方法は?

セレクターとは何ですか?

ブロックとは何ですか?
どんな種類のブロックがありますか?
どのクラスから継承されますか?

ブロック内でselfを使用すると、常にサイクルを保持することを意味しますか?

ブロック内で暗黙のconstが使用されるのはなぜですか?

__blockはどのように機能しますか?

ブロック呼び出しはどのように発生しますか?

assertはブロック内で使用されますが、どのような問題が発生しますか?
別の方法で強調表示せずにそれらを排除する方法は?

アサートとは何ですか?

__autoreleasingとは何ですか?

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

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

NSTimerと実行ループはどのように関連していますか?
別のスレッドでタイマーを開始する方法は?
タイマーを開始してUIScrollViewを保持するとどうなりますか?
修正方法

実行ループと自動解放プールはどのように関連していますか?

なぜこのコードにメモリリークがあり、それを修正する方法はありますか?
  NSString *str; while (YES) { str = [NSString stringWithFormat:@"hello world"]; } 

objcにはどのような種類のメモリ管理がありますか?

ガベージコレクションと参照カウント?

ARCとMRCの違いは?
ARCはどのように機能しますか? オブジェクトをいつ削除するかをどのように決定しますか?
MRCでセッターの実装を書く

weakとstrongの違いは何ですか?また、なぜこれに多くのランタイム関数があるのですか?

なぜ一部のクラスでウィークを使用できないのですか?
どれ?
この場合はどうすればいいですか?

ARC、deallocはどのように機能しますか?
ivarのリリースメッセージはいつ配置されますか?

真のブランチを実行する理由 偽ブランチを実行する理由 結果は何に依存しますか?
  BOOL b = 1024; if (b) { NSLog(@"true"); } else { NSLog(@"false"); } 

これらの構造は同じメモリを占有しますか?その理由は?
 struct StructA { int32_t a; char b; char c; }; struct StructB { char b; int32_t a; char c; }; 

ユニオンとは何ですか?

しかし、これらの構造はどのくらいのメモリを必要とし、それは何についてですか?
 struct Value1 { int32_t foo:12; int32_t foo1:4; int32_t foo2:6; int32_t foo3:10; }; struct Value2 { int32_t foo; int32_t foo1; int32_t foo2; int32_t foo3; }; 


揮発性とは何ですか?

インライン関数とは何ですか?

スレッドとプロセスの違いは何ですか?

NSThread vs pthread

ソケット、これは上記の質問にどのように関係しますか?
tcp、udpいつ適用するか?

スレッドレース、同期方法、クリティカルセクション保護、セマフォ、ミューテックス、バリア、それは何で、なぜ必要なのですか?
OSSpinLockとは何ですか?

NSOperation間でデータを転送する方法は?
NSOperationQueueに送信された操作の実行が開始されたときに、実行を遅らせることは可能ですか?

非同期メソッドをテストする方法は?
非同期メソッドの同期ラッパーを作成する方法は?

コールスタックとは何ですか?
スタックとヒープの違いは何ですか?
int8_tマトリックス[2048] [2024]、有効ですか?

再帰関数と末尾再帰、再帰は末尾にできますか?

オブジェクトが配列、辞書、セットに追加されると、参照カウンターはどうなりますか?
他の動作が必要な場合、何を使用しますか?
セットするために追加されたオブジェクトを何度も見つけることは可能ですか? (バッグ)

クラスをキーとして使用する方法は?

不変を使用する利点は何ですか?
欠点は何ですか?
プロパティにコピー属性が必要な理由と、それが解決する問題は何ですか?

kvcが機能する理由と方法
キーパス、コレクションハッキング

NSMapTableが必要な理由、NSHashTableとの違いは何ですか

KVOを使用する際の問題とその仕組み

フレーム、境界、中央、これはすべてどのように互いに関連していますか?
45°回転を適用すると、プロパティはどのように変化しますか?
すべてのサブビューを3ポイント上下に移動する方法は?

ビューとレイヤーの違いは?

レスポンダーの動作原理
レスポンダーチェーンでメッセージを送信する方法

カテゴリはどのように機能しますか?
クラスはどの時点で影響しますか?
カテゴリが重複するとどうなりますか?
カテゴリに名前があるのはなぜですか?

NSCacheが必要な理由 NSDictionaryでのキャッシュの実装は何ですか?
NSURLConnectionはHTTP / 2をサポートしていますか?

objcタイピングとは何ですか? 強い/弱い、明示的/暗黙的、静的/動的?
QoSユーザー対話型とユーザー開始型の違いは何ですか?
nil / nil / null / nsnullの違いは何ですか?
________

繰り返しになりますが、コメントの質問への回答は投稿しないでください。 この記事は、人々が単に質問と答えを読むためのものではなく、自分で答えを見つけるためのものです。

complexclassとともに記述された記事

Source: https://habr.com/ru/post/J273487/


All Articles