1. 程式人生 > 其它 >Android效能優化面試題集錦,Android程式設計師秋招三面螞蟻金服

Android效能優化面試題集錦,Android程式設計師秋招三面螞蟻金服

位元組跳動線上被虐指南

線上面試,有個線上文字編輯器,類似leetcode那種,可以線上程式設計。然而有點緊張,很多簡單的問題沒答出來,還是要平時多積累,面試才不露怯啊。分享下問題給大家。

面試官上來跟你嘮嘮嗑,然後切入正題,問你專案經歷。

由專案經歷,開始問一條請求從使用者端到服務端經歷了些什麼。

答曰:DNS解析等。遂:DNS解析細節?

問:具體是怎麼對映的?

答:不知。

問:TCP,UDP區別?為什麼是三次握手?為什麼是四次揮手?三次不可以嗎?

問:常用執行緒池型別和引數,適用場景

問:rxjava的flatmap原理

問:作業系統瞭解嗎?問:JVM記憶體模型?調優經驗?

問:編碼題:7個執行緒按次序列印1-70

答:(這個沒答好太不應該了,我說思路是靠sychronize 一個物件然後wait notify,面試官提示我加鎖效率低,結束之後回想起來才意識到應該是想讓我答自旋+cas)

問:handler的記憶體洩漏情況,強軟弱虛引用,messagqueue原理

問:非靜態內部類為什麼能訪問外部類私有變數

問:leak canary原理,怎麼實現非侵入式回撥

問:apk簽名原理,v1v2v3簽名區別

演算法題:給長度2n+1的陣列,n個數字兩兩成對。找出只出現一次的陣列。

思路:借用一塊空間記錄出現的情況。

最後篩選。提示:位運算。面試最後,問我還有什麼要問的。

我和麵試官相視一笑,就知道涼涼了。

小結

:面試官十分考察基礎知識。一個問題縱向解構會問出很多其他深入問題,直到答不上來為止,個人感覺面試官這邊是沒有期望的答案的,不會說,噢,你答對了我想要的點,可以,下一個問題。而是:嗯,這個問題過了,是時候把下一個問題丟擲來了。最後,主要原因還是自己比較菜,基礎知識不牢固所致。望大家不覆前車之鑑,明年再來!

怎樣準備技術面試,為何優秀的程式設計師也會被刷掉?

其實不止上述這些程式設計師因為基礎不牢靠被刷,還有很多的優秀程式設計師也會被刷掉。

去年,作為技術 Leader 和主程式設計師,我面試了超過 100 位的軟體工程師職位候選人。

在下文章中,我將和你分享候選人在面試中最容易犯的那些錯誤。我還會和你分享怎樣準備這些面試,好讓你最大可能通過這些面試。另外,我還會給到一些額外的技巧,它們將幫助你應對這些令人畏懼的技術面試。

首先,我想澄清一下,相比於做程式設計師,進行面試可以說是另一種技能。你可以是一名優秀的軟體工程師,但可能是一名糟糕的面試者。邏輯上來講,你越擅長軟體開發,你就越有可能通過技術面試。但是,這並不能打包票保證你一定能通過絕大數的程式設計師崗位面試。

面試中易犯的錯誤

在我看來,以下這些是技術面試中,程式設計師最容易犯的錯誤:

由於害怕失敗而變得緊張

我們傾向於認為我們的生活或者職業生涯都押注在了這次面試上,押注在這次工作機會上。但事實並非如此!面試不通過也沒關係,但是我們不能因為害怕通不過面試就不去面試,也不要把機會都押注在這一次面試上。每次你去面試,你都能學到很多東西。所以,放輕鬆,不要慌張!實際上,通常只有 10% 的機會能夠通過面試,所以不要期望太高。提前做好準備,盡力就好,敞開雙臂接受任何結果。

沒有為你所申請的公司做準備工作

每個公司都是不一樣的,並且各自有其特有的面試流程。我們應當儘可能多的調研這家公司、其創始人、員工、商業模式、產品或者服務、以及它使用的技術等等。確保總是準備好了一系列問題,以此來證明你對這家公司的好奇與興趣。

在經歷上過分誇大或者撒謊
我們應當對此非常謹慎。正常來講,面試流程中的所有面試官都會對候選人的資訊做前後對比和交叉驗證。如果他們發現前後不一致的地方,你將會直接被拒,再不會有其他機會了。所以,不要把自己置身於這個險境。突出一些你成功的地方是可以的,但絕不要撒謊。在你所有的面試中,都要保持真誠、誠實和一致。

對於非預期的問題隨機應變
例如,想象一下你正在面試一個開發者職位,你被問及一個關於系統的問題,你可以通過 3 種方式迴應:

被動式:你可能會說你不瞭解這個,並且也不解釋為何不瞭解這個,也不說明你所瞭解的有哪些。這種回答是不會對你有所幫助的。

激進式:你可能會說這不是你所期望被問及的問題,因為你申請的是軟體開發者職位,還暗示面試官換一個問題提問。你這就有些激進了,更糟糕的是,沒有人想要和太激進的人一起工作。

獨斷式:你可能會說你不瞭解這個,因為你通常不會做這方面的工作,你有一個系統團隊會為你做這方面的工作。但你可以說你很樂意學習這些技能,如果需要從事相關任務的話。

說前任領導或者前任同事的壞話
這是一個陰暗地帶,並且當面試官直接問及時,你很容易就陷入這個陰暗地帶。面試中絕不要說起任何人不好的一面,哪怕是你的公司,也不要說起不好的一面。試著儘可能做到客觀,找到有建設性的場景。更進一步,可以談談積極的一面,如果你離開了他(它)們,你將會錯過什麼。

技術面試小技巧

以下這些是我個人認為最好的小技巧,它們會最大程度增加你通過技術面試的機率:

第一條建議相當簡單:閱讀我的部落格,觀看我的每週視訊。我會分享過去 15 年作為軟體工程師、技術 Leader 和技術經理所學到的所有東西。

第二條建議對於成功真的很關鍵,特別是當你坐在電腦前,進行現場線上程式設計或者結對程式設計面試時特別管用。聽著:不要使用滑鼠!使用 Vim 或者 Emacs 編輯器。專業的程式設計師只使用鍵盤和這些編輯器。記住這兩條,你將會給面試官留下深刻印象。如果你還沒有用過 Vim,記得要去練習使用 Vim,因為它很容易上手。

在白板程式設計或者結對程式設計面試中,要和你的面試官交流互動,詢問他們,把你的想法告訴他們等等,這很重要。有時候,他們想看到的是你如何思考和推理,你怎樣分析問題,以及你怎樣和他們一起合作來找到答案。通常,找到答案的這個過程甚至比答案本身更重要。

意識到面試是一個雙向的過程。即便你是被面試的人,你也應該通過某種方式瞭解你的面試官,瞭解更多你可能未來要一起工作的團隊和公司。你要確保你真的適合那個團隊,並且你的價值觀和這家公司的價值觀是一致的。展示你對這個機構的好奇和興趣。可以問一些技術上的問題,也可以問一些不那麼技術性的問題。

準備好回答一些基於行為的問題。正如我上篇文章裡提到的,當今的公司不希望僱傭聰明的書呆子。這就是為什麼這些“文化適配”的面試在大部分初創公司裡很常見。他們想知道你過去怎樣應對各種不同的工作情形。本質上,他們想要確定你的職業觀是否和他們的一致。想想你過去做過的相關場景,正面的(例如:關於影響力)和不那麼正面的(例如,關於失敗)。帶著具體的例子來回答是很重要的,儘可能多的包含細節,而不要泛泛而談,泛泛而談的東西不會給面試官提供任何資訊。

綜上,我想強調的是,參加面試,就像其他任何技能一樣,需要準備和練習。你練習得越多,你通過面試的可能性就越大。

讓我用我的一句座右銘來總結:

“對於軟體工程師來講,最重要的能力是他們開發出軟技能的能力。”

最後

給大家送上我成功跳槽複習中所整理的資料,由於文章篇幅有限,所以只是把題目列出來了

本文已被CODING開源專案:《Android學習筆記總結+移動架構視訊+大廠面試真題+專案實戰原始碼》收錄