這一年的時間已經經歷了實習、校招好幾回的面試了,對於每一個準備找工做或者已經找到工做的人來講,準備面試題都是一次提高本身的機會。但比較慶幸的是,本人幾回面試所遇到的問題都比較簡單,沒有太多能讓本身有所提高的內容,而網上流傳的各類面試題現在看來也沒有什麼太大的新意。所以我決定本身出一份面試題,真正有一點難度的面試題。面試
對於我我的來講,我不太喜歡那些查一查就能獲得答案的題目,好比某個 API 怎麼用,或者某個數據結構怎麼寫等等,由於這些題目其實考察都是肌肉記憶,就算答得好也不表明這我的能力很強,只能說他前期準備工做作得比較好。我下面所提出的幾個問題都是須要必定實踐或者必定經驗才能流暢解答出來的題目,若是這些問題對你來講 so easy,那麼說明你有必定的知識廣度,對問題比較喜歡深刻探究。固然了,若是你以爲某幾個問題有些許難度,也沒有太大的關係,可以說出一個大體的思路也是 ok 的,後期再慢慢摸索一下對本身也是有極大提高的。服務器
下面就來看看個人問題吧!網絡
UIView
與 CALayer
的關係,drawRect
必定會影響性能嗎?UI Dynamics 與 UIKit Animation 的最本質區別是什麼?UIImageView
顯示超大分辨率的圖?若是要支持縮放呢?id
、self
、super
它們從語法上有什麼區別?Class
對象自己的指針嗎?__block
還能夠怎麼作?有哪些侷限性?NSDictionary
與 NSHashTable
有什麼區別,它們的使用場景是怎樣的?backtrace
是在用戶態實現的嗎?可否講講實現它的大體思路?malloc
的指針 double free 產生的異常與訪問 freed 指針有可能產生的異常有什麼區別?爲何訪問 freed 指針不必定產生異常?fastpath
、slowpath
是什麼?SideTables
(不是 SideTable
)存在的意義是什麼?[super dealloc]
?int main(int argc, const char * argv[]) {
// ...
NSUInteger threadCount = [NSProcessInfo processInfo].activeProcessorCount;
NSCondition *cond = [NSCondition new];
for (int i = 0; i < threadCount; i++) {
[NSThread detachNewThreadWithBlock:^{
while (YES) {
[cond lock];
while (/* Queue is empty */) {
[cond wait];
}
// Dequeue an item.
[cond unlock];
// Handle the item.
}
}];
}
while (YES) {
// Enqueue something when it comes.
[cond broadcast];
}
// ...
}
複製代碼
雖然只有 21 道題,但相關問題仍是不少不少的,往後我可能也會寫一篇文章來解答一下全部的問題,固然我更但願你們可以本身完成這些問題,不要嘗試直接搜答案,不少題也許根本搜不到答案,因此本身探究的過程必定是必不可少的,加油吧!數據結構