一位面試官問了一些數(shù)據(jù)結(jié)構(gòu)相關(guān)的問題 另一位面試官則問了一些項目相關(guān)的問題
交流比較順暢 和他們的交流也反饋給我一些信息 原來工作中有些地方可以做的更好
比如代碼的耗時點的評估
問到數(shù)據(jù)結(jié)構(gòu)時 面試官問了我這樣一個問題
1. 求兩個二叉樹的子節(jié)點的最低公共父節(jié)點?
這個問題當(dāng)時我是這樣回答的:遞歸向上尋找父節(jié)點 每一個父節(jié)點又各自向下遞歸尋找另一個要尋找的子節(jié)點。 這個做法無疑是低效的。面試官教我這樣一種方法:兩個子節(jié)點都向上遞歸到根節(jié)點 然后逐個驗證兩條路徑中的每個節(jié)點是否是公有節(jié)點 直到尋找到最低節(jié)點。
這個方法明顯比我的要聰明不少,另外我查了些資料 其實這個問題還有其他解法
1. 中序遍歷
2. 后序遍歷
為什么可以用這兩種方法呢?
因為兩個子節(jié)點的公共父節(jié)點必定在他們的中間!這是個容易得出的規(guī)律。
中序遍歷時 按順序遍歷 左 根 右節(jié)點
后序則是 左 右 根節(jié)點
按照這種方法可以大概圈定出公共節(jié)點的范圍 再采用遞歸尋找會快些。
2. 求最小的k個數(shù)
這個問題我是這樣答的:建立小頂堆 然后拿走堆頂節(jié)點后再調(diào)整堆為小頂堆
這樣的話開銷在于 第一次小頂堆的建立
后序每次小頂堆的重調(diào)整(開銷不像第一次建立那么大)
這一題面試官似乎不是很滿意答案 但是我回來想了下 網(wǎng)上能查到的還有用快排實現(xiàn)的
實際上也是用的遞歸快排 開銷也不低 這個問題可能還得再想想。
工程相關(guān)的問題:
1. 關(guān)于框架的跨平臺
這個問題主要也就是回答了下怎么把C++的框架代碼應(yīng)用到Android和ios上
關(guān)于Android方面的我熟悉一些 簡單講了下C調(diào)用Java,Java調(diào)用C的方法。
以及對應(yīng)的C++接口阻塞/非阻塞 Java監(jiān)聽C代碼的回調(diào)這些
ios就簡單介紹了下自己用過的Object-C/C++混合編程
2. 關(guān)于代碼的耗時點
這和我原來的想法有點不一樣
原來我認為的優(yōu)化是通過在代碼里替換高IO代碼為arm匯編來提高效率
但實際上好像沒有這樣做
另外面試官還提到了用工具來分析代碼性能 我查了一下有不少開源實現(xiàn)
這個要關(guān)注一下。 原來的分段式分析耗時的方法還是比較落后 效率比較低一些。
總結(jié)
美圖的技術(shù)實力還是過硬的 原先參加過的面試 基本只問些項目相關(guān)的邏輯實現(xiàn)
這次面試問了不少基礎(chǔ)相關(guān)的問題 不少基礎(chǔ)沒打扎實 要研究清楚來。
-
工程師
+關(guān)注
關(guān)注
59文章
1589瀏覽量
69292 -
C++
+關(guān)注
關(guān)注
22文章
2117瀏覽量
74885 -
美圖
+關(guān)注
關(guān)注
0文章
77瀏覽量
8267
發(fā)布評論請先 登錄

硬件工程師看了只會找個角落默默哭泣#硬件工程師 #MDD #MDD辰達半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
硬件工程師面試/筆試經(jīng)典 100 題


硬件工程師面試必看試題(經(jīng)典)
如何成為一名嵌入式軟件工程師?
長沙怎么這么難招硬件工程師呀



硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達半導(dǎo)體

不同時期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過于真實 #YXC晶振 #揚興科技
【面試題】人工智能工程師高頻面試題匯總:機器學(xué)習(xí)深化篇(題目+答案)

【面試題】人工智能工程師高頻面試題匯總:Transformer篇(題目+答案)

人工智能工程師高頻面試題匯總——機器學(xué)習(xí)篇



評論