前言
整個面試從四月底,到現(xiàn)在,面試的經(jīng)歷,總共只有 卓??萍?/strong> 是去了公司,其他都是線上面試.
讀本文你能得到什么 --->實戰(zhàn)的面試題,心態(tài)變化,準備要點
面試的公司:
歡聚時代,卓??萍?匯豐銀行,荔枝FM,騰訊視頻,
地點:廣州
面試流程
1.歡聚時代YY:
首先第一家面試是YY,當時是應(yīng)聘的直播框架的技術(shù)支持,HR說YY把成熟的直播技術(shù)做成SDK,方便其他公司使用,如果集成遇到了技術(shù)問題,這個崗位就是為了解決這個問題.
當時是一個做直播相關(guān)的組長面試我的,面試時間是2020-04-23-8:00pm,那是今年的第一次面試,之前沒有筆試,還沒有什么面試狀態(tài),
印象比較深的幾個面試題:
(1)靜態(tài)庫 動態(tài)庫的區(qū)別:
我的前一篇文章有講到 靜態(tài)庫介紹
(2)tcp的三次握手:為什么是三次,不是兩次,四次?
第一次:客戶端發(fā)送syn包,
第二次:服務(wù)端收到syn + 1,再送回給客戶端
第三次:客戶端發(fā)送請求,告訴服務(wù)端收到服務(wù)端的返回數(shù)據(jù),
最后一次,可以看出,客戶端必須回應(yīng)服務(wù)端,我已經(jīng)收到了你的數(shù)據(jù),最少要三次,這樣能保證可以建立可靠的連接,如果再增加一次,也只是提高連接的穩(wěn)定,其實作用也不太大.
(3)你對未來的幾年是怎樣規(guī)劃的
我當時答的是想學(xué)JAVA,腳本,最后當架構(gòu)師,這個的確是我當時的想法,因為當時掌握完OC底層的東西,學(xué)東西在一個上升期,什么都有興趣.
面試官大致意思:應(yīng)該把手頭的知識學(xué)透,往深了學(xué),iOS學(xué)透了,專注一門技術(shù),不同語言的底層邏輯都是大同小異,學(xué)原理,別在意那些語法糖,做個
T型人才,他語言表達比我好,后來這話我還真聽進去了...下決心往深了學(xué),才有的這一系列文章.
小結(jié):
這次面試我發(fā)揮的不太好,這兩個問題沒答全;最后面試官問你 ,還有沒有什么想問我的,一個萬金油式的回答--->我想問下,您覺得我今天的面試表現(xiàn)怎么樣,能不能給我一些建議,面試官還挺好的,給我指出哪些不足的問題,沒有說一些官方的話,給的建議都一針見血,
精選全網(wǎng) · iOS面試題答案PDF文集
- 最新 初級iOS 面試題
- 最新 中級iOS 面試題
- 最新 高級iOS 面試題
- 《BAT面試資料全集》
- 《BAT大廠常問iOS面試題》
- 《2021年面試真題》
- 《iOS中級到高級面試題完整版》
- 字節(jié)跳動,京東,小米,騰訊、頭條、阿里、美團等公司21年的面試真題

資料下載地址:
2.卓??萍?/h5>
當時去的時候是在天河區(qū)華強路9號,上樓惠康碼+身份證,刷身份證上樓,當時回來的時候還把身份證搞丟了;
這個公司大概40人左后,地方不大,在等候區(qū)待了二十來分鐘,給了一套筆試題,做完人事把我?guī)У焦局虚g的會議室,
筆試題還記得兩道:
具體記不得,大概意思就是問你會出現(xiàn)什么問題,顯然是會釋放兩次,出現(xiàn)BAD_ACCESS_XXX的野指針錯誤
autoreleasePool{
[person release]
autoreleasePool{
[person release]
}
}
frame bounds 區(qū)別,frame相對于父控件,bounds相對自身
面試我的應(yīng)該也是一個小組長,瘦瘦的,173左右,戴N95白口罩,過程中有點廣西口音,曾經(jīng)一度聽不清他在問的問題,面試時間是2020-05-15-10:30am
面試題
(1)單例:我當時回答用GCD的dispatch_once,它說不會有線程問題嗎,當時把我問懵逼了,心里想一直是這么用的啊,沒發(fā)現(xiàn)問題,難道是要加鎖???,然后我就回答了個@synchronized,它說有沒有其他方法,我一直沒get到他的點,他提示我是語言層面的,我想了一下,我說不知道,能不能請教一下,他說static,我其實有點懵,單例不是就這么寫么...
(2)MVVM,簡要說下VM有什么作用,我回答的是,作為M 和 V 的橋梁,減少VC的體積,把組建數(shù)據(jù),發(fā)送請求,請求返回處理數(shù)據(jù),及數(shù)據(jù)源的方法都搬到VM,邏輯結(jié)構(gòu)更為清晰,
他說: 還有呢, 還有呢... 我想不到了,
請教一下:他回答四個關(guān)鍵字,解耦,XX,XX,XX,后面幾個不記得了,我感覺我說的也是差不多的意思,可能讓他覺得沒有答到他想聽的關(guān)鍵字,
整個面試感覺交流有點障礙,我不知道他想問的點在哪,說我缺乏面試經(jīng)驗,也確實是面試不多,整個面試沒有面到特別有共鳴的時候,感覺體驗不是太好,當時的面試心態(tài)其實挺放松,到真正聊的時候完全不緊張,甚至還有點囂張,自己的原因的話就是知識的提取速度慢,沒有很清晰的理解面試官想問的問題.
3.匯豐銀行
匯豐銀行是一家外企,有一定的英語口語要求,面試要英文自我介紹,當時是急著招人,委托了幾家外包公司招人,軟通動力,法本,記得當時軟通動力的好幾個人事給我發(fā)消息,面試流程就是,外包公司的技術(shù)面試我,面試完之后還跟面試官聊起來了,因為當時問的問題都很常見,所以還算比較聊得來,
有個小插曲,軟通動力本來和我定的時間是2020-06-17-06:30pm,后來改到六點,我急急忙忙下班等著,那邊一直沒上線,等了半小時,就退了,后來當時就約了法本的技術(shù)面試,過了之后給了我一套題,說是匯豐里面的技術(shù)會問到的問題,
面試的時候又出現(xiàn)烏龍,讓我下載ZOOM這個APP,然后當時進去,半天聽不到聲音,調(diào)了好久,進進退退,最后調(diào)好,聊了五分鐘,加了微信,才發(fā)現(xiàn)他也是來面試的...
最后沒面上,整個面試體驗不好,外包公司有個菇?jīng)鰰皶r通知你,一路給你服務(wù),和你溝通面試時間,那兩家外包公司好像是競爭關(guān)系,她跟我說,一定要來我們公司之類的話,應(yīng)該是面試進一個她們會有分成,最后面試的匯豐里面的會給你一些專業(yè)詞匯,用英語說的,singleton....類似這些,因為我不會swift,當時他們項目用swift開發(fā),所以沒匹配上
薪資的話他們招聘的時候給的還挺高的20k-40k,有點讓我感興趣的是匯豐的辦公地點 和 能夠鍛煉英語,公司的位置就在太古匯附近,離我住的地方算近的,但是也沒覺得可惜,當做一次面試經(jīng)驗.
4.荔枝FM
我之前在拉鉤往上看過荔枝的介紹視頻,公司體量挺大的,有自己的食堂,氛圍看著也還不錯,給出的薪資也比較中肯,我面試的時間是2020-06-22-03:15pm當時面試官開會,所以延后了15分鐘,人事也提前給我打電話說明,公司的流程方面還是挺細心的,面試前會給你幾個筆試題做,下面是我還記得的幾道筆試題,沒記錯的話,整個筆試時間是40min
0.NSString 為什么用copy
當時我就說了copy 和 mutableCopy的區(qū)別,一個是地址拷貝,一個是值拷貝,這個題我也看到過,
所以又舉例 如果NSMutableArray 用copy的話創(chuàng)建出來的最終會是__ArrayI類型,
就是不可變的,如果你再用這個數(shù)組調(diào)用addObject:就會出現(xiàn)方法找不到的錯,
因為它本質(zhì)是NSArray,不是NSMutableArray
1.UIView 和 CALayer 的區(qū)別,舉例CALayer的妙用
簡單說了下CALayer不能響應(yīng)事件,用于動畫,背景顏色顯示,UIView可以響應(yīng),妙用就是一些動畫方面.
2.以下代碼的作用是什么? 變量age被定義為NSInteger,它編譯時沒有問題【告警忽略】……但為什么會crash?
UILabel *mylabel=[UILabel new];
mylabel.text=age?[NSString stringWithFormat:@"%@",age]:@"";
這個題我在筆試之前曾經(jīng)搜過他家公司的筆試題,我知道不會崩,當時我看著age沒有指定類型,
分別以NSInteger 和 NSString做的說明,
3.給定一個區(qū)間 {[]},傳入一個值 a,返回一個區(qū)間,
比如 {[ ]},a = 1--> {[1 1]},
{[1 3]} a = 2 --> {[1 3]}
{[1 4] ,[6 8]} a = 5-->{[1 8]}
大概是這個意思,我當時寫的是偽代碼,
考慮一般情況
{[x1 y1],[x2 y2],...,[xn yn]} ,給定 a
if(a < x1){
{[a a],[x1 y1],[x2 y2],...,[xn yn] }
}else if( a > yn){
{[x1 y1],[x2 y2],...,[xn yn] ,[a a]}
}else{
這判斷 a 是否包含在某個區(qū)間內(nèi),或者 能夠合并兩個相鄰區(qū)間,
我的思路是 把 arrayX = [x1 ,x2,...,xn]數(shù)組用二分法找到最近一個小于a的x,
判斷是否在當前區(qū)間內(nèi),或者 在兩個區(qū)間之間,
}
4. 舉個例子說明你在項目中用到比較復(fù)雜/厲害/牛逼的技術(shù),你是怎么從發(fā)現(xiàn)問題,定位,
解決的整個過程(題意大概是這個意思),
我當時舉了個例子,半真半假吧,項目的確遇到過那個問題,把最近看的MJRefresh里用msg_send()的那個宏,
有興趣的可以看看[這篇文章](http://www.itdecent.cn/p/fed5bb2d6eb6)
我當時答的是手機銀行調(diào)用藍牙盾崩在了里面,因為有些方法沒有暴露出來,用這個技術(shù)定位并重現(xiàn)了這個問題,
確定是SDK的問題,最后讓他們修改的
MJRefresh里用msg_send()的那個宏,有興趣的可以看看這篇文章
星期天筆試完,周一下午安排的面試,面試大概持續(xù)了一個小時,他們公司的面試題會認真看(YY的面試題似乎沒有看,我記得我YY的面試題做的很爛,下面一會兒會講到),面試開始,他說:那咱們就從面試題開始吧,
(1)拿著那個NSString為什么用copy的題又問了一遍,我當時在想,是不是筆試題沒有回答對,然后我又答了一些,[xxxx mutableCopy]返回的是可變對象,[xxx copy]返回的是不可變對象,它似乎不怎么滿意,就一直追著問(這個面試官的特點就是從一個小的點展開,他不會很明顯的考察哪個知識點,他是通過不斷深入問一些應(yīng)用場景的題目,看你的掌握深度 和 解決問題的能力,這幾場面試,荔枝是最累的),后來我說不太清楚了,能不能請教一下,他說的意思我大致用代碼來說明:
@interface ViewController ()
@property(nonatomic,copy)NSString *name;
@property(nonatomic,strong)NSString *name1;
@end
- (void)viewDidLoad{
[super viewDidLoad];
NSMutableString *strM = [NSMutableString stringWithString:@"this is a sentence"];
self.name = strM;
self.name1 = strM;
strM.string = @"abc";
NSLog(@"%@ - %@",self.name,self.name1);
打印結(jié)果:
this is a sentence - abc
所以結(jié)論是,如果你用copy ,strM改變之后不會影響原來的值,如果用strong,
那么指針會指向那個 strM,會跟著改變,
當時沒有細想,我覺得這種說法有待商榷,如果我的需求就是想跟著改變呢,所以我覺得NSString用copy修飾就是一個假命題,因為這個要看你的業(yè)務(wù)場景,不是不用copy就是錯.
這里說明下:當你不知道問題答案的時候,你可以直接問面試官,因為你面試就是查漏補缺,搞懂你不會的知識點,其次面試官也會覺得你是個好學(xué)的人,有的面試官都是很愿意分享的,他們也有傾訴欲,也有可能這個知識點也會,只是題目你沒理解清楚,他提點一下你就想起來也說不定,所以;不懂的,一定要問,就算面試不過,我也得從面試官口中撬出些有用的東西.
(2)后來聊到NSTime的使用會造成內(nèi)存泄漏的問題,他說你在使用timer的時候會傳入什么值, 我回答 self ,@selector,又問:你在什么時候釋放timer,我說:在你明確的業(yè)務(wù)場景下,不用timer了,[self.timer invalidate];self.timer = nil;一般在dealloc,現(xiàn)在這種情況會出現(xiàn)相互強引用的情況,控制器肯定釋放不了,走不到dealloc,它又問怎么辦,我想了一下在viewWillDisappear里面操作,當前控制器pop ,push新控制器的時候再來做判斷,然后銷毀timer,又問: viewWillDisappear方法是在pop,的時候調(diào)用還是在push的時候調(diào)用,我回答都會調(diào)用,又問:那你怎么區(qū)分,我想了想,回答說,看self.navigationController.viewControllers是增了還是減了,又問:你每個控制器都這么搞嗎,我又提供了一些想法,當初綁定weakSelf,
self.timer = [NSTimer timerWithTimeInterval:1 target:weakself selector:@selector(testString) userInfo:nil repeats:YES];
或者全局搞一個BOOL flag,在timer的方法里判斷之后再干掉timer,又問:那timer的方法只調(diào)一次嗎? 我回答說用flag判斷了啊,他又問:你這個self.navigationController.viewControllers數(shù)量增加只能在下一個界面拿到.
那我說我不太清楚了,可以請教一下嗎?
他大概是這個意思
@interface ViewController ()
@property(nonatomic,strong)NSTimer *timer;
@property(nonatomic,weak)MJPerson *person;
@end
- (void)testVc{
XXX
}
- (void)viewDidLoad{
[super viewDidLoad];
self.timer = [NSTimer timerWithTimeInterval:1 target:self.person selector:@selector(testPerson) userInfo:nil repeats:YES];
}
給timer綁定一個weak修飾的屬性,用這個屬性的testPerson方法,調(diào)回控制器的testVc方法,
我當初說好吧,理解了,
我后來回頭想想,好氣哦,感覺自己吵架沒發(fā)揮好,他這個方法還不如我的,"你難道每創(chuàng)建一個timer都搞一個類來綁定嗎?,還再調(diào)回到當前控制器,你是要搞一個block,還是代理,真麻煩..."
這是我當初的邏輯
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"ViewController";
self.timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(testTimer) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
}
- (void)testTimer{
NSLog(@"%s",__func__);
}
- (void)dealloc{
NSLog(@"%s",__func__);
}
- (IBAction)pushToNext:(UIButton *)sender {
ViewControllerAfter *afterVc = [[ViewControllerAfter alloc]init];
afterVc.view.backgroundColor = [UIColor whiteColor];//不設(shè)置顏色就會卡一下,而且push出來的控制器是黑的
__weak typeof(self)weakSelf = self;
afterVc.keepTimerAliveBlock = ^(BOOL isKeep) {
if(isKeep) [weakSelf killTimer];
};
[self.navigationController pushViewController:afterVc animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
如果要特殊處理,可以創(chuàng)建一個BOOL值用在這里做標識
[self.timer invalidate];
self.timer = nil;
}
- (void)killTimer{
[self.timer invalidate];
self.timer = nil;
NSLog(@"%s",__func__);
}
(3)我說我最近讀了MJExtension 和 MJRefresh,他讓我說說原理,他說那個動畫你是怎么實現(xiàn)的,我說用layer做的動畫,他給了個實際應(yīng)用場景,舉例說:假如有一個動畫是,一個箭頭一開始指向十二點的位置,隨著scrollView的拖動,順時針旋轉(zhuǎn),拉到臨界值,就指向六點的位置,你會怎么做,如果我向上再滑動80% ,在拉回20%,你的動畫怎么做,我說傳入一個初始值,最終值,做動畫,這組問題是問的最久的,動畫我不太熟悉,這題沒答好,
最后我問他 ,覺得我面試怎么樣,他說:整體還可以,有些地方基礎(chǔ)有點薄弱;說通過的話,人事明天會給你聯(lián)系,如果沒有,就是沒有過,這點倒是挺明確的,當然后來沒收到人事電話,我整體說說這次面試的感受吧,
整體的感受就是,他不單純的考察你某一個技術(shù)點,不是問一些原理性的東西,他的每個知識點都是融入在每個應(yīng)用場景當中,如果你沒有很好的開發(fā)經(jīng)驗,面試起來是比較吃力的,他會一直追著往下問,直到你回答不出來 或者 給出完美答案為止,這個還是蠻鍛煉人的.
5.歡聚時代YY:
是的,你沒有看錯,我又得到了一次YY的面試機會,當時YY的人事給我打電話,我自己也有點懵,她說;在我們的人才庫里發(fā)現(xiàn)你的簡歷,想跟您邀約一下面試,其實在面試荔枝FM之前 前兩面都已經(jīng)過了,在寫這篇文章的時候,三面技術(shù)都過了,就剩下今天下午的人事面試了,
YY的面試分為五輪:一輪筆試,三輪技術(shù),一輪人事,
筆試題我真的做的很爛....
1.鏈表反轉(zhuǎn)
2.UIView 和 layer 的區(qū)別
3.假如有一個樓道,有A階樓梯,你每次可以走B階,或者C階,B,C都有可能大于A,問:一共有多少種走法,
4.最后一個題也挺經(jīng)典的,我忘記了,記起來再補充
5...
他們應(yīng)該沒怎么看面試題,或者說參考度不是很大,不然我應(yīng)該沒有后續(xù)的面試機會,除了鏈表的曾經(jīng)做過,筆試的時候死活記不起來...,后面三道題,我感覺都挺難的.
一面:
一面問了一些常規(guī)的問題,說說數(shù)組和鏈表的區(qū)別;我當時腦袋記串了,把hash表的一通說;我當時是這么說的,我說數(shù)組的存取都是O(1),因為數(shù)組 hash出來的值直接存到某個位置了,而鏈表只能添加末尾,數(shù)組的內(nèi)存是連續(xù)的,鏈表是不連續(xù)的,鏈表的取是O(1)的,后來他說,數(shù)組的插入效率是很低的,因為所有的后面元素都要往后挪,我才醒悟過來,我又不能說我知道,只是記混了...
判斷回文串,一個字符串,從正面和反面讀,都是一樣的,比如 12321,abcba,面試官還給我解釋了一遍,人家還是挺不錯的,我當時想了想,沒好的解法,我說不太會,他說,沒事兒,你再想想,我就開始擠墨水,說搞兩個指針,一個指向開頭,一個指向末尾,向中間靠攏,分別對比,不同就返回false,直到兩個指針相遇,他說;嗯 ,暴力破解,面試結(jié)束后我又想到一個,有些語言中有reverse()函數(shù),比如swift,可以將字符串反轉(zhuǎn),再比較相等,還可以復(fù)制一個字符串,將其中一個字符串入棧,再stack.pop()跟原來的對比,其他的問題 我就不太記得了,主要是這兩個問題卡殼.
我當初問面試官,您覺得我面試怎么樣,能不能給些建議,他說;挺好的,說是跟人事商量下,我以為是客套,因為這兩個問題是硬傷,
二面
二面就聊得很對路,有一個小的算法題,怎么找出數(shù)組中的第二大的數(shù),
我當初就回答了,遍歷兩次,暴力破解,第二個是請教他,告訴我的,他剛一提到用兩個變量,我就想到了,max ,max1,每當max更新之前,就把max1 = max;這樣一次遍歷就能找到;
當時他就直說的,說覺得技術(shù)還不錯,所以當時心里就有底了,會有第三面,當時他說,三面會有l(wèi)eader,我問他要不要什么特殊準備,他也給了我一些建議;二面當天是星期五,HR問我下次面試定在什么時候,我說下周二,當時是想著能夠多一天準備,穩(wěn)一點,后來覺得還挺冒險的,萬一有人比我先選上呢,同時戰(zhàn)線拉得太長,自己會很疲.
三面
第三面的時候心態(tài)就有些變化,開始有得失心,前面兩面心態(tài)都很平靜,不是很在乎,盡力就好,就以前面試都不會緊張,就平等交流,我覺得個人與公司是個雙向選擇的過程,不是因為你公司牛逼就非去不可;
到面試前中午午睡都睡的不是太好,因為是leader面,可能是前兩面有點順,怕陰溝里翻船,我特意刷了些排序算法,還有那種考驗動手能力的,設(shè)計模式,當時二面跟我說的,
三面的第一個問題就是你項目做的比較閃光的點,聊聊這個,
關(guān)于這個問題面試都會遇到,變式1:你有沒有在項目中遇到比較難解決的問題,最后是怎么解決的,,變式2:你在平時學(xué)習(xí)中學(xué)到的技術(shù)點,有沒有在項目中用過...
面試官問這個有幾層意思,想看看你的技術(shù)深度,或者想找一些切入點來展開,引申出一些其他的問題,
我接觸的項目很難了解到最底層的東西,跟著項目聊了二十分鐘左右,,沒有說出具體的加密算法,和工程里面有亮點的地方,我心里覺得可能要出事,然后我就跟面試官交流,我說聊自己的項目的話,不能完全體現(xiàn)我的能力,咱們可不可以聊一些其他的,比如說第三方,OC底層,源碼閱讀...后來這個就成了面試的轉(zhuǎn)折點,有種起死回生的感覺,最后勉強達到及格線,沒有再卡殼的問題.
端午的前一天,接受了HR的面試,HR面試的目的就是考察一些點,比如,你的基本資料是否真實,你的生活習(xí)慣,學(xué)習(xí)能力怎么樣,你的成長環(huán)境,當時HR問了我的大學(xué)生活,做了什么值得驕傲的事兒,我說,做過文學(xué)工作室的主任,編輯過幾本雜志,因為我是在民族學(xué)校上的學(xué),還問了一些民族學(xué)生的相同和不同點,然后就是問平時生活中怎么提升工作能力的,你的學(xué)習(xí)渠道是哪些,我回答的是閱讀開源框架,撰寫博客,關(guān)注一些bilibi的程序員博主,再有就是買一些行業(yè)內(nèi)的書籍閱讀,最新的技術(shù),比如所AI,云計算等等,聊了大概40min,HR說會后續(xù)跟進;我以為到HR這關(guān)基本上就算是已經(jīng)過了,但是現(xiàn)在還是沒收到offer,心里有些忐忑,我猜想可能他們手里拿了幾個名額,要比對一個性價比最好,或者說最有潛力的人來擔(dān)任這份工作,所以接下來還是積極準備面試吧...--->已拿到offer

6.騰訊視頻:
騰訊面試的時間恰好是剛面完YY人事之后,高強度的面試真的耗精力;
騰訊的面試崗位是深圳的,面試時間差不多一個小時,面試內(nèi)容前部分主要集中在自己做的項目內(nèi)展開,因為我本身是做手機銀行業(yè)務(wù)的,在這一塊其實感覺沒什么可挖掘的點,因為銀行的核心業(yè)務(wù)代碼不會讓每個開發(fā)人員看的到,一些銀行的加密算法和具體的流程都封裝在SDK內(nèi)部,而且有專門負責(zé)安全的安全組來做加密控件,我們只是調(diào)用,和封裝邏輯代碼,沒有太大的技術(shù)含量,所以感覺還是蠻吃虧的,可供提煉的點有點少.
這次面試比較有價值的一個題目是:
我們將整數(shù)x的權(quán)重定義為按照下述規(guī)則將x變成1所需要的步數(shù):
如果x是偶數(shù),那么x = x / 2;如果x是奇數(shù),那么x = 3 * x + 1
比方說,x=3 的權(quán)重為 7 。因為 3 需要 7 步變成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。
給你三個整數(shù)lo,hi 和k。你的任務(wù)是將區(qū)間[lo, hi]之間的整數(shù)按照它們的權(quán)重升序排序,如果大于等于 2 個整數(shù)有相同的權(quán)重,那么按照數(shù)字自身的數(shù)值升序排序。請你返回區(qū)間[lo, hi]之間的整數(shù)按權(quán)重排序后的第k個數(shù)?!綥eetCode 1387】
當時我給出的解法--也是最容易想到的解法,暴力破解,先算出所有的權(quán)重,排序,再給出第k個數(shù).
面試感受
整個面試階段,大概面試了六七家,目前還沒拿到offer,寫這篇文章的目的是總結(jié)自己的面試經(jīng)歷,也分享給大家,從這幾次面試,得到一些比較有用的點.
- 一定要提煉自己工程上的技術(shù)要點,因為面試官是拿著你的簡歷在面試,切入點也是你的項目工程,即使你覺得工程中用到的技術(shù)點都沒什么可說的,你也得找出幾個閃光點,我在這個點上吃了虧,沒有很好的展示出自己的技術(shù)棧,YY第三面的時候差點栽在這里,所以以后的面試得認真的分析一下自己的項目內(nèi)容,準備兩到三個可以長時間對話的面試內(nèi)容.
- 大廠的算法題沒有我想象的難度那么高,我之前覺著可能會問到紅黑樹,二叉樹的具體操作,因為我簡歷上寫的是熟悉基本的數(shù)據(jù)結(jié)構(gòu)和算法,面試者幾家都是比較常見的算法題,所以算法的準備其實可以偏向于一些智力類型的題,這個其實是考察你解決問題的能力,也許你沒刷到過這個題,但是你也可以給出一些暴力破解的方法,可能深入的那些算法題是給那些資深工程師 或者 架構(gòu)師水平的人準備的,在這方面可以有些側(cè)重點.
- 平時開發(fā)中遇到的問題,盡量做出記錄,因為在面試的時候這種問題最常見,考察的也是你解決問題的能力,雖然我覺得開發(fā)中遇到的bug,90%是因為你的粗心,剩下的就是你的知識儲備不夠,API不熟悉,導(dǎo)致的,但是在面試的時候是比較注重你這方面的能力,解決問題的能力.
- 因為每個人的側(cè)重點不同,接觸的項目也不同,盡量引導(dǎo)面試官,把面試內(nèi)容引導(dǎo)到你所熟知的點,比如你擅長性能優(yōu)化,你在回答問題的時候就可以多提這種關(guān)鍵詞,面試的時候經(jīng)常出現(xiàn)的場景就是,"你剛提到XXX,那你說一說XXX是怎么實現(xiàn)的,如果讓你來做你會怎么樣...",把問題引導(dǎo)你熟悉的領(lǐng)域,這樣能提高你面試的成功率.
- 最后一個就是心態(tài)問題,雖然現(xiàn)在沒有拿到理想的offer,我也覺得我挺厲害的,不要因為沒有面試上就覺得自己很差勁,面試的過程就是發(fā)現(xiàn)問題的過程,你上一次面試沒有答上來的問題,下去之后你就去找解答方法,在下一次面試的時候,你就能答上來,正視問題,找到解決辦法,
- 框架代碼 和OC底層的閱讀,OC底層就是根據(jù)它底層的實現(xiàn),你去整理它內(nèi)部的實現(xiàn)邏輯,更有利于理解代碼,為什么它要這么設(shè)計,比如 NSDictionary 的key不能存空置,我就老是記不住 是 value,還是key,不能存空值,跟數(shù)組不能add nil混在一起;還有就是這兩個框架給我?guī)土撕艽蟮拿?跟著框架一步步實現(xiàn),能夠積累很多知識點,還有就是設(shè)計思想上的東西,我覺得閱讀源碼,對一個程序員來說實在太重要了,它能體現(xiàn)你的技術(shù)深度,是否了解了本質(zhì).