安卓插件化开发!移动开发程序员怎么优雅迈过30K+这道坎?全网最新
前言
又到了面試求職高峰期,最近有很多網(wǎng)友都在求大廠面試題。正好我之前電腦里面有這方面的整理,于是就發(fā)上來分享給大家。
這些題目是網(wǎng)友去百度、小米、樂視、美團、58、獵豹、360、新浪、搜狐等一線互聯(lián)網(wǎng)公司面試被問到的題目。熟悉本文中列出的知識點會大大增加通過前兩輪技術(shù)面試的幾率。
網(wǎng)上的都是按照公司劃分的,想找具體某一方面的知識點有點不好找,我這里就根據(jù)知識點分門別類的整理了一下,想看哪一塊可以快速找到,希望可以幫助大家,祝大家求職順利。
學會深入思考,總結(jié)沉淀
我想說的第一條就是要學會深入思考,總結(jié)沉淀,這是我覺得最重要也是最有意義的一件事。
?先來說深入思考。在程序員這個圈子里,常能聽到一些言論:我這個工作一點技術(shù)含量都沒有,每天就CRUD,再寫寫if-else,這TM能讓我學到什么東西?
拋開一部分調(diào)侃和戲謔的論調(diào)不談,這可能確實是一部分同學的真實想法,至少曾經(jīng)的我,就這么認為過。
后來隨著工作經(jīng)驗的積累,加上和一些高level的同學交流探討之后,我發(fā)現(xiàn)這個想法其實是非常錯誤的。之所以出現(xiàn)沒什么可學的這樣的看法,基本上是思維懶惰的結(jié)果。
任何一件看起來很不起眼的小事,只要進行深入思考,稍微縱向挖深或者橫向拓寬一下,都是足以讓人沉溺的知識海洋。
?舉一個例子。某次有個同學跟我說,這周有個服務(wù)OOM了,查了一周發(fā)現(xiàn)有個地方defer寫的有問題,改了幾行代碼上線修復了,周報都沒法寫。
可能大家也遇到過這樣的場景,還算是有一定的代表性。其實就查bug這件事來說,是一個發(fā)現(xiàn)問題,排查問題,解決問題的過程,包含了觸發(fā)、定位、復現(xiàn)、根因、修復、復盤等諸多步驟。
花了一周來做這件事,一定有不斷嘗試與糾錯的過程,這里面其實就有很多思考的空間。比如說定位,如何縮小范圍的?走了哪些彎路?用了哪些分析工具?
**比如說根因,**可以研究的點起碼有l(wèi)inux的OOM,k8s的OOM,go的內(nèi)存管理,defer機制,函數(shù)閉包的原理等等。如果這些真的都不涉及,仍然花了一周時間做這件事,那復盤應(yīng)該會有很多思考,提出來幾十個WHY沒問題吧…
**?再來說下總結(jié)沉淀。**這個我覺得也是大多數(shù)程序員比較欠缺的地方,只顧埋頭干活,可以把一件事做的很好。但是幾乎從來不做抽象總結(jié),以至于工作好幾年了,所掌握的知識還是零星的幾點,不成體系,不僅容易遺忘,而且造成自己視野比較窄,看問題比較局限。
**適時地做一些總結(jié)沉淀是很重要的,這是一個從術(shù)到道的過程,會讓自己看問題的角度更廣,層次更高。**遇到同類型的問題,可以按照總結(jié)好的方法論,系統(tǒng)化、層次化地推進和解決。
?還是舉一個例子。做后臺服務(wù),今天優(yōu)化了1G內(nèi)存,明天優(yōu)化了50%的讀寫耗時,是不是可以做一下性能優(yōu)化的總結(jié)?
比如說在應(yīng)用層,可以管理服務(wù)對接的應(yīng)用方,梳理他們訪問的合理性;在架構(gòu)層,可以做緩存、預處理、讀寫分離、異步、并行等等;在代碼層,可以做的事情更多了,資源池化、對象復用、無鎖化設(shè)計、大key拆分、延遲處理、編碼壓縮、gc調(diào)優(yōu)還有各種語言相關(guān)的高性能實踐…
等下次再遇到需要性能優(yōu)化的場景,一整套思路立馬就能套用過來了,剩下的就是工具和實操的事兒了。大家也可以關(guān)注微信公眾號:Java技術(shù)棧,在后臺回復:架構(gòu),可以獲取我整理的 N 篇 Java 架構(gòu)教程,都是干貨。
?還有的同學說了,我就每天跟PM撕撕逼,做做需求,也不做性能優(yōu)化啊。先不討論是否可以搞性能優(yōu)化,單就做業(yè)務(wù)需求來講,也有可以總結(jié)的地方。比如說,如何做系統(tǒng)建設(shè)?系統(tǒng)核心能力,系統(tǒng)邊界,系統(tǒng)瓶頸,服務(wù)分層拆分,服務(wù)治理這些問題有思考過嗎?
每天跟PM討論需求,那作為技術(shù)同學該如何培養(yǎng)產(chǎn)品思維,引導產(chǎn)品走向,如何做到架構(gòu)先行于業(yè)務(wù),這些問題也是可以思考和總結(jié)的吧。就想一下,連接手維護別人爛代碼這種蛋疼的事情,都能讓Martin Fowler整出來一套重構(gòu)理論,還顯得那么高大上,我們確實也沒啥必要對自己的工作妄自菲薄…
?所以說學習和成長是一個自驅(qū)的過程,如果覺得沒什么可學的,大概率并不是真的沒什么可學的,而是因為自己太懶了,不僅是行動上太懶了,思維上也太懶了。
積極學習,保持技術(shù)熱情
?最近兩年在互聯(lián)網(wǎng)圈里廣泛傳播的一種焦慮論叫做35歲程序員現(xiàn)象,大意是說程序員這個行業(yè)干到35歲就基本等著被裁員了。
不可否認,互聯(lián)網(wǎng)行業(yè)在這一點上確實不如公務(wù)員等體制內(nèi)職業(yè)。但是這個問題里35歲程序員并不是絕對生理意義上的35歲,應(yīng)該是指那些工作十幾年和工作兩三年沒什么太大區(qū)別的程序員。
后面的工作基本是在吃老本,沒有主動學習與充電,35歲和25歲差不多,而且沒有了25歲時對學習成長的渴望,反而添了家庭生活的諸多瑣事,薪資要求往往也較高,在企業(yè)看來這確實是沒什么競爭力。
**?而如果我們積極學習,保持技術(shù)能力、知識儲備與工作年限成正比,這到了35歲哪還有什么焦慮呢,這樣的大牛我覺得應(yīng)該也是各大公司搶著要吧?**但是學習這件事,其實是一個反人類的過程,這就需要我們強迫自己跳出自己的安逸區(qū),主動學習,保持技術(shù)熱情。
在滴滴時有一句話大概是,主動跳出自己的舒適區(qū),感到掙扎與壓力的時候,往往是黎明前的黑暗,那才是成長最快的時候。相反如果感覺自己每天都過得很安逸,工作只是在混時長,那可能真的是溫水煮青蛙了。
?剛畢業(yè)的這段時間,往往空閑時間還比較多,正是努力學習技術(shù)的好時候。借助這段時間夯實基礎(chǔ),培養(yǎng)出良好的學習習慣,保持積極的學習態(tài)度,應(yīng)該是受益終身的。至于如何高效率學習,網(wǎng)上有很多大牛寫這樣的帖子,到了公司后內(nèi)網(wǎng)也能找到很多這樣的分享,我就不多談了。
?可以加入學習小組和技術(shù)社區(qū),公司內(nèi)和公司外的都可以,關(guān)注前沿技術(shù)。
?主動承擔,及時交流反饋
?前兩條還是從個人的角度出發(fā)來說的,希望大家可以提升個人能力,保持核心競爭力,但從公司角度來講,公司招聘員工入職,最重要的是讓員工創(chuàng)造出業(yè)務(wù)價值,為公司服務(wù)。
雖然對于校招生一般都會有一定的培養(yǎng)體系,但實際上公司確實沒有幫助我們成長的義務(wù)。而在能為公司辦成事,創(chuàng)造價值這一點上,我覺得最重要的兩個字就是主動,主動承擔任務(wù),主動溝通交流,主動推動項目進展,主動協(xié)調(diào)資源,主動向上反饋,主動創(chuàng)造影響力等等。
我當初剛?cè)肼毜臅r候,基本就是leader給分配什么任務(wù)就把本職工作做好,然后就干自己的事了,幾乎從來不主動去跟別人交流或者主動去思考些能幫助項目發(fā)展的點子。自以為把本職工作保質(zhì)保量完成就行了,后來發(fā)現(xiàn)這么做其實是非常不夠的,這只是最基本的要求。
而有些同學的做法則是leader只需要同步一下最近要做什么方向,下面的一系列事情基本不需要leader操心了 ,這樣的同學我是leader我也喜歡啊。入職后經(jīng)常會聽到的一個詞叫owner意識,大概就是這個意思吧。
?在這個過程中,另外很重要的一點就是及時向上溝通反饋。項目進展不順利,遇到什么問題,及時跟leader同步,技術(shù)方案拿捏不準可以跟leader探討,一些資源協(xié)調(diào)不了可以找leader幫忙,不要有太多顧忌,認為這些會太麻煩,leader其實就是干這個事的。。
如果項目進展比較順利,確實也不需要leader介入,那也需要及時把項目的進度,取得的收益及時反饋,自己有什么想法也提出來探討,問問leader對當前進展的建議,還有哪些地方需要改進,消除信息誤差。
做這些事一方面是合理利用leader的各種資源,另一方面也可以讓leader了解到自己的工作量,對項目整體有所把控,畢竟leader也有l(wèi)eader,也是要匯報的。可能算是大家比較反感的向上管理吧,有內(nèi)味了,這個其實我也做得不好。但是最基本的一點,不要接了一個任務(wù)悶著頭干活甚至與世隔絕了,一個月了也沒跟leader同步過,想著憋個大招之類的,那基本涼涼。
?一定要主動,可以先從強迫自己在各種公開場合發(fā)言開始,有問題或想法及時one-one
?除了以上幾點,還有一些小點我覺得也是比較重要的,列在下面:?
第一件事建立信任
?無論是校招還是社招,剛?cè)肼毜牡谝患率欠浅V匾?#xff0c;直接決定了leader和同事對自己的第一印象。入職后要做的第一件事一定要做好,最起碼的要順利完成而且不能出線上事故。這件事的目的就是為了建立信任,讓團隊覺得自己起碼是靠譜的。
如果這件事做得比較好,后面一路都會比較順利。如果這件事就搞雜了,可能有的leader還會給第二次機會,再搞不好,后面就很難了,這一條對于社招來說更為重要。
?而剛?cè)肼?#xff0c;公司技術(shù)棧不熟練,業(yè)務(wù)繁雜很難理清什么頭緒,壓力確實比較大。這時候一方面需要自己投入更多的精力,另一方面要多跟組內(nèi)的同學交流,不懂就問。
最有效率的學習方式,我覺得不是什么看書啊學習視頻啊,而是直接去找對應(yīng)的人聊,讓別人講一遍自己基本就全懂了,這效率比看文檔看代碼快多了,不僅省去了過濾無用信息的過程,還了解到了業(yè)務(wù)的演變歷史。當然,這需要一定的溝通技巧,畢竟同事們也都很忙。
?臉皮要厚一點,多找人聊,快速融入,最忌諱有問題也不說,自己把自己孤立起來。
超出預期
?超出預期這個詞的外延范圍很廣,比如leader讓去做個值周,解答用戶群里大家的問題,結(jié)果不僅解答了大家的問題,還收集了這些問題進行分類,進而做了一個智能問答機器人解放了值周的人力,這可以算超出預期。比如leader讓給運營做一個小工具,結(jié)果建設(shè)了一系列的工具甚至發(fā)展成了一個平臺,成為了一個完整的項目,這也算超出預期。
超出預期要求我們有把事情做大的能力,也就是想到了leader沒想到的地方,并且創(chuàng)造了實際價值,拿到了業(yè)務(wù)收益。這個能力其實也比較重要,在工作中發(fā)現(xiàn),有的人能把一個小盤子越做越大,而有的人恰好反之,那么那些有創(chuàng)新能力,經(jīng)常超出預期的同學發(fā)展空間顯然就更大一點。
?這塊其實比較看個人能力,暫時沒想到什么太好的捷徑,多想一步吧。
體系化思考,系統(tǒng)化建設(shè)
?這句話是晉升時候總結(jié)出來的,大意就是做系統(tǒng)建設(shè)要有全局視野,不要局限于某一個小點,應(yīng)該有良好的規(guī)劃能力和清晰的演進藍圖。比如,今天加了一個監(jiān)控,明天加一個報警,這些事不應(yīng)該成為一個個孤島,而是屬于穩(wěn)定性建設(shè)一期其中的一小步。
這一期穩(wěn)定性建設(shè)要做的工作是報警配置和監(jiān)控梳理,包括機器監(jiān)控、系統(tǒng)監(jiān)控、業(yè)務(wù)監(jiān)控、數(shù)據(jù)監(jiān)控等,預期能拿到XXX的收益。
這個工作還有后續(xù)的roadmap,穩(wěn)定性建設(shè)二期要做容量規(guī)劃,接入壓測,三期要做降級演練,多活容災,四期要做…給人的感覺就是這個人思考非常全面,辦事有體系有規(guī)劃。
?**平時積極總結(jié)沉淀,多跟別人交流,形成方法論。**?
提升自己的軟素質(zhì)能力
?這里的軟素質(zhì)能力其實想說的就是PPT、溝通、表達、時間管理、設(shè)計、文檔等方面的能力。說實話,我覺得我當時能晉升就是因為PPT做的好了一點…可能大家平時對這些能力都不怎么關(guān)注,以前我也不重視,覺得比較簡單,用時候直接上就行了,但事實可能并不像想象得那樣簡單。
比如晉升時候PPT+演講+答辯這個工作,其實有很多細節(jié)的思考在里面,內(nèi)容如何選取,排版怎么設(shè)計,怎樣引導聽眾的情緒,如何回答評委的問題等等。
晉升時候我見過很多同學PPT內(nèi)容編排雜亂無章,演講過程也不流暢自然,雖然確實做了很多實際工作,但在表達上欠缺了很多,屬于會做不會說,如果再遇到不了解實際情況的外部門評委,吃虧是可以預見的。
?公司內(nèi)網(wǎng)一般都會有一些軟素質(zhì)培訓課程,可以找一些場合刻意訓練。
?以上都是這些分享還都算比較偉光正,但是社會吧也不全是那么美好的。。下面這些內(nèi)容有負能量傾向,三觀特別正的同學以及觀感不適者建議跳過。
拍馬屁是真的香
?拍馬屁這東西入職前我是很反感的,我最初想加入互聯(lián)網(wǎng)公司的原因就是覺得互聯(lián)網(wǎng)公司的人情世故沒那么多,事實證明,我錯了…
入職前幾天,部門群里大leader發(fā)了一條消息,后面幾十條帶著大拇指的消息立馬跟上,學習了,點贊,真不錯,優(yōu)秀,那場面,說是紅旗招展鑼鼓喧天鞭炮齊鳴一點也不過分。
除了驚嘆大家超強的信息接收能力和處理速度外,更進一步我還發(fā)現(xiàn),連拍馬屁都是有隊形的,一級部門leader發(fā)消息,幾個二級部門leader跟上,后面各組長跟上,最后是大家的狂歡,讓我一度懷疑拍馬屁的速度就決定了職業(yè)生涯的發(fā)展前景(沒錯,現(xiàn)在我已經(jīng)不懷疑了)。
?坦誠地說,我到現(xiàn)在也沒習慣在群里拍馬屁,但也不反感了,可以說把這個事當成一樂了。倒不是說我沒有那個口才和能力(事實上也不需要什么口才,大家都簡單直接),在某些場合,為活躍氣氛的需要,我也能小嘴兒抹了蜜,甚至能把古詩文彩虹屁給leader安排上。而是我發(fā)現(xiàn)我的直屬leader也不怎么在群里拍馬屁,所以我表面上不公開拍馬屁其實屬于暗地里事實上迎合了leader的喜好…
?但是拍馬屁這個事只要掌握好度,整體來說還是香的,最多是沒用,至少不會有什么壞處嘛。大家能力都差不多,每一次在群里拍馬屁的機會就是一次露臉的機會,按某個同事的說法,這就叫打造個人技術(shù)影響力…
?想舔就舔,不想舔也沒必要酸別人,Respect Greatness。
?永不缺席的撕逼甩鍋實戰(zhàn) ? 有人的地方,就有江湖。雖然搞技術(shù)的大多城府也不深,但撕逼甩鍋邀功搶活這些鬧心的事兒基本也不會缺席,甚至我還見到過公開群發(fā)郵件撕逼的…
這部分話題涉及到一些敏感信息就不多說了,而且我們低職級的遇到這些事兒的機會也不會太多。只是給大家提個醒,在工作的時候遲早都會吃到這方面的瓜,到時候留個心眼。
?稍微注意一下,咱不會去欺負別人,但也不能輕易讓別人給欺負了。
不要被畫餅蒙蔽了雙眼
?說實話,我個人是比較反感灌雞湯、打雞血、談夢想、講奮斗這一類行為的,這一套治還在大行其道,真不知道是該可笑還是可悲。當然,這些詞本身并沒有什么問題,但是這些東西應(yīng)該是自驅(qū)的,而不應(yīng)該成為外界的一種強push。
『我必須努力奮斗』這個句式我覺得是正常的,但是『你必須努力奮斗』這種話多少感覺有點詭異,努力奮斗所以讓公司的股東們發(fā)家致富?尤其在錢沒給夠的情況下,這些行為無異于耍流氓。
我們需要對leader的這些畫餅操作保持清醒的認知,理性分析,作出決策。比如感覺錢沒給夠(或者職級太低,同理)的時候,可能有以下幾種情況:
?leader并沒有注意到你薪資較低這一事實
?leader知道這個事實,但是不知道你有多強烈的漲薪需求
?leader知道你有漲薪的需求,但他覺得你能力還不夠
?eader知道你有漲薪的需求,能力也夠,但是他不想給你漲
?leader想給你漲,也向上反饋和爭取了,但是沒有資源
?這時候我們需要做的是向上反饋,跟leader溝通確認。如果是1和2,那么通過溝通可以消除信息誤差。如果是3,需要分情況討論。如果是4和5,已經(jīng)可以考慮撤退了。
對于這些事兒,也沒必要抱怨,抱怨解決不了任何問題。我們要做的就是努力提升好個人能力,保持個人競爭力,等一個合適的時機,跳槽就完事了。
?時刻準備著,技術(shù)在手就沒什么可怕的,哪天干得不爽了直接跳槽。?
學會包裝
?這一條說白了就是,要會吹。忘了從哪兒看到的了,能說、會寫、善做是對職場人的三大要求。能說是很重要的,能說才能要來項目,拉來資源,招來人。
同樣一件事,不同的人能說出來完全不一樣的效果。比如我做了個小工具上線了,我就只能說出來基本事實,而讓leader描述一下,這就成了,打造了XXX的工具抓手,改進了XXX的完整生態(tài),形成了XXX的業(yè)務(wù)閉環(huán)。老哥,我服了,硬幣全給你還不行嘛。
據(jù)我的觀察,每個互聯(lián)網(wǎng)公司都有這么幾個詞,抓手、生態(tài)、閉環(huán)、拉齊、梳理、迭代、owner意識等等等等,我們需要做的就是熟讀并背誦全文,啊不,是牢記并熟練使用。
?這是對事情的包裝,對人的包裝也是一樣的,尤其是在晉升和面試這樣的應(yīng)試型場合,特點是流程短一錘子買賣,包裝顯得尤為重要。
晉升和面試這里就不展開說了,這里面的道和術(shù)太多了。。關(guān)注微信公眾號:Java技術(shù)棧,在后臺回復:面試,可以獲取我整理的 N 篇 Java 面試題干貨。
下面的場景提煉自面試過程中和某公司面試官的談話,大家可以感受一下:
我們背后是一個四五百億美金的市場…
我負責過每天千億級別訪問量的系統(tǒng)…
工作兩年能達到這個程度挺不錯的…
貴司技術(shù)氛圍挺好的,業(yè)務(wù)發(fā)展前景也很廣闊…
啊,彼此彼此…
嗯,久仰久仰…
作者2013年從java開發(fā),轉(zhuǎn)做Android開發(fā),在小廠待過,也去過華為,OPPO等大廠待過,18年四月份進了阿里一直到現(xiàn)在。
參與過不少面試,也當面試官 面試過很多人。深知大多數(shù)初中級Android工程師,想要提升技能,往往是自己摸索成長,不成體系的學習效果低效漫長,而且極易碰到天花板技術(shù)停滯不前!
我整理了一份阿里P7級別的最系統(tǒng)的Android開發(fā)主流技術(shù),特別適合有3-5年以上經(jīng)驗的小伙伴深入學習提升。
主要包括阿里,以及字節(jié)跳動,騰訊,華為,小米,等一線互聯(lián)網(wǎng)公司主流架構(gòu)技術(shù)。如果你想深入系統(tǒng)學習Android開發(fā),成為一名合格的高級工程師,可以收藏一下這些Android進階技術(shù)選型
我搜集整理過這幾年阿里,以及騰訊,字節(jié)跳動,華為,小米等公司的面試題,把面試的要求和技術(shù)點梳理成一份大而全的“ Android架構(gòu)師”面試 Xmind(實際上比預期多花了不少精力),包含知識脈絡(luò) + 分支細節(jié)。
Java語言與原理;
大廠,小廠。Android面試先看你熟不熟悉Java語言
高級UI與自定義view;
自定義view,Android開發(fā)的基本功。
性能調(diào)優(yōu);
數(shù)據(jù)結(jié)構(gòu)算法,設(shè)計模式。都是這里面的關(guān)鍵基礎(chǔ)和重點需要熟練的。
NDK開發(fā);
未來的方向,高薪必會。
前沿技術(shù);
組件化,熱升級,熱修復,框架設(shè)計
網(wǎng)上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。希望這份系統(tǒng)化的技術(shù)體系對大家有一個方向參考。
我在搭建這些技術(shù)框架的時候,還整理了系統(tǒng)的高級進階教程,會比自己碎片化學習效果強太多,騰訊文檔上可見;《Android架構(gòu)視頻+學習筆記》
當然,想要深入學習并掌握這些能力,并不簡單。關(guān)于如何學習,做程序員這一行什么工作強度大家都懂,但是不管工作多忙,每周也要雷打不動的抽出 2 小時用來學習。
么很難做到真正的技術(shù)提升。希望這份系統(tǒng)化的技術(shù)體系對大家有一個方向參考。
我在搭建這些技術(shù)框架的時候,還整理了系統(tǒng)的高級進階教程,會比自己碎片化學習效果強太多,騰訊文檔上可見;《Android架構(gòu)視頻+學習筆記》
當然,想要深入學習并掌握這些能力,并不簡單。關(guān)于如何學習,做程序員這一行什么工作強度大家都懂,但是不管工作多忙,每周也要雷打不動的抽出 2 小時用來學習。
不出半年,你就能看出變化!
總結(jié)
以上是生活随笔為你收集整理的安卓插件化开发!移动开发程序员怎么优雅迈过30K+这道坎?全网最新的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Quartus II破解出现的问题
- 下一篇: 网优前途何在