<th id="zdz9p"></th>

        <th id="zdz9p"><progress id="zdz9p"><listing id="zdz9p"></listing></progress></th>

          快捷搜索:  創業 手機 瘋狂 壞人 華人 發明 自己

          2016校招Android開發,一個非重本應屆生的坎坷求職路

          和大多數的面經不同,我不是大牛,手頭也沒有3,4個 sp 的 offer 求比較,我只是一個非211,985的本科應屆畢業生,想分享一下自己坎坷的求職歷程,來給更多求職路上迷茫的應屆生一些鼓勵,特別是本科應屆生。另外還要特別感謝北郵信安研二的趙翔,研三信安的吳博還有清華的金輝,雖然只是做了短短一兩個月的同事,但是在之后一直盡其所能的幫助鼓勵我。還有研三信安的胡相鐸,非常感謝這位大神在技術學習上對我的指導!最后,當然是牛客網這個大平臺了,提供的校招信息相當的全面,希望能越辦越好!


          8月初就開始準備校招,一直到10月份下旬,一切都結束塵埃落定了。因為家在深圳而人又在北京,所以我一開始就打算在北京參加校招,找回深圳的工作,真正實踐下來,還是相當有難度。我是非985,211的應屆本科生,像這種技術崗位,在北京,面臨的問題不僅僅是你學校是不是重本的問題,還有很多中科院,清北,北郵,北航,北理工的研究生跟你一起競爭,除非你真的非常優秀,拿過ACM 獎,或者實習經歷和項目經歷都非常豐富,你的簡歷才有通過的可能,不然很可能連簡歷篩選這關都無法通過。如果一些非重本的本科應屆生,想要從事技術崗位的工作,一定要好好豐富自己的履歷,一個人在學校悶頭學和外出實習學習,二者的能學到的東西,比較起來真的差很多。我運氣比較好,遇到了相當開明的輔導員和系主任,都表示愿意放我走,于是大三就開始在已經在三星實習。


          非重本的本科應屆畢業生,在很多地方都相當受歧視。有些企業點名就只要211的畢業生,比如華為,中興等等。我現在仍然記得我最受屈辱的一件事情;當時華為在北郵的宣講會結束,允許宣講會后找面試官直接投遞簡歷,面試官在收到我的簡歷后,連我的實習經歷都沒多看一眼,直接翻到最后找到我學校,然后露出一副鄙夷的態度,把簡歷打還給我,表示不接受非重本的應屆畢業生。我當時心情沮喪到幾天都沒緩過來,心神恍惚,淋著雨走到了地鐵站,連地鐵都坐過了站。我幾可預見即將到來的2個月是我人生第二個轉折,卻沒想到迎頭就摔了一個大大的跟頭,2個月之后我會去往哪里,夙愿的offer能否拿到,能否回到家人身邊工作,種種矛盾與迷茫,匯集成激流,洶涌而至。


          真正的心態的轉變,是從網易的第一通電話開始的,也算是我的第一次面試的開始。感謝北郵人這個平臺,讓我找到了內推碼,才把簡歷發了出去。網易的內推相當早,基本8月初就已經開始了,大家一定要盡早寫好簡歷,很多好的互聯網公司也是從8月份就開始了內推,我個人認為整個內推流程下來,感覺難度和后期參加的BAT,TMD的(頭條,美團,滴滴)校招差不多,大家不需要擔心難度會很大,最要緊的還是盡早復習,準備好基礎知識。


          回到網易的內推上,電話面試其實也有很多坑,并不是所有的面試官都有備而來想好了面試的一系列問題。更多時候他只是想了解你對于項目經歷的深入程度,需要你主動的講解項目經歷。我曾經聽過在網易電面就掛了的同學的吐槽,他當時在魅族實習,公司規定進行的項目需要保密,當面試官問他項目經歷時候,他便回答說這個保密不能說,面試官當場就不高興了(可能之前電面太多同學了有點累了不耐煩了),覺得他在裝逼,沒聊10分鐘就這同學喪失了興趣掛了電話。所以大家應該在內推前,應該想好現在在公司的項目,什么該說什么不該說。另外,在你主動講解項目的時候,不要介紹的太淺,可以仔細聊聊你在項目中遇到的棘手的技術難題或者難以實現的項目需求,你是怎么突破實現的,從而引起面試官的興趣,引導他在你熟悉的技術上對你發問。我大概和面試官聊了45分鐘,順利通過了第一輪面試。


          第二輪技術面試,因為時間問題趕不到杭州了,我選擇了視頻面試,短信告知要求使用網易的易信進行視頻面試,結果面試過程中各種聲音延遲,視頻卡頓,面著面著就不得以改成了語音面試,面試官也叫苦連天,真是自己人坑了自己人。第二面時間相當緊,說好的10點半結果拖到11點15才面,可能面試官趕著吃飯,見面還沒打招呼問題就上來了,炮彈式發問,答到點上馬上就提出下一問題。面試官那里應該有個列表的,照著列表提問,根據回答給予不同程度的評分。都是 Android 開發題目,問題相當的細,當時問了這么一個問題:View中onTouch,onTouchEvent,onClick的執行順序,如果只是簡單的在學校寫下 Demo,是很難把這么細的問題回到上來的,只有真正的參與到整個 App 開發流程,才能回答上來。面了45分鐘左右,答得七七八八,讓我等 HR 通知


          在我很意外的情況下接到了 HR 面,因為等的時間比較長,我幾乎都認為我的網易面已經跪了。HR 面也是相當的斗智斗勇,上來讓我介紹下我自己,做過什么項目,個人的職業規劃是什么,課外興趣有哪些,手頭有別家 Offer 嗎,最后難點來了,問我為什么會選擇來杭州,家人是否有在杭州的,感覺這個就被卡住了,臨時急匆匆撒了個慌,感覺這個地方答得太蹩腳,最后讓我說下自己的5個缺點,我以自己可能有些冒失悲觀為由跟她講了一下我參加華為宣講會簡歷被拒的經歷,她反倒安慰起我,忘記問我后面2個缺點了,不知道要不要感謝華為。一個 offer 就這個到手了


          拿到網易 offer 后已經是9月底,手頭也有一家C 輪的北京創業公司的 offer,可是我還是希望能的找到深圳的工作。與騰訊在北京地區的校招失之交臂后,華為中興兩家雖在深圳,無奈又卡我學歷。我雖然順利通過幾家互聯網公司的網上筆試,進入面試環節,但是今年互聯網寒冬真的來的太猛了,北京地區競爭又激烈,說是百里挑一都不為過了,基本上校招的問題的難度已經和社招沒什么區別的,印象最深的還有一道題目,讓應用防第三方清理的方法,面試官要求我說至少4種,我腦汁絞盡,除了最基本的雙進程守護外,連利用 Android 4.1 的系統漏洞獲取臨時Root權限偽裝成系統級應用都說了,才勉強放過我。


          百度在深圳也有Android 開發的崗位,線上筆試雖然過了,但是我投的時候選擇的是在北京參加面試,應聘的是深圳地區的崗位。我機緣巧合下得到了深圳地區的 HR 的電話,詢問在深圳地區的Android 開發的崗位的情況,她回答我說在其他城市進行校招時已經招滿了。我心情瞬間跌到谷底,在北京找回深圳的工作的希望正式宣告破滅了,我下決心回深圳參加社招拼一拼(深圳幾乎沒有什么校招宣講會)。


          在深圳海投一波簡歷后,我也確實通過了不少公司的面試,無奈別人是社招的崗位,需要我立刻上崗工作,我學校還有事情要處理,不可能全職工作的。在這里也給大家提個醒,不到萬不得已,不要參加社招,時間上的確合不來,而且企業也更容易毀約,大部分大規模的公司,用人方面都有規定,只允許應屆生走校招流程進來。


          就我認為我希望再次破滅之際,突然接到美圖公司的電話,我已經說明我是應屆生,不能立刻報道,他們說沒問題他們這邊有校招名額空缺(之前在北郵有宣講會,沒去成),問我方便過來深圳分公司這邊面試嗎?我一口答應下,第二天到公司后,一路筆試,技術面試,HR 面,CTO 面,輕車熟路過關斬將,下午就收到Offer,可能我之前在三星也是做圖像處理類的 App 比較多,技術那邊覺得相當符合期望,薪資比之前談的還要高了一點。瞬間覺得之前受的背運白眼都有了回報,真是苦盡甘來了。

              

          就在答應過幾天去美圖簽三方了,結果夢寐以求的騰訊突然打電話來技術面試,想起原來是社招的投的簡歷,問的問題相當有難度,答的磕磕巴巴的,以為沒戲了,晚上打電話來又要求到總部面。感覺自己像個快結婚的人了,突然學生時代的初戀女神過來撩撥一下你,明知不可能卻又心存僥幸,心情起起伏伏又患得患失,人生的精彩不過如此吧。最后再次與騰訊失之交臂,加入了美圖。 


          2016校招Android開發,一個非重本應屆生的坎坷求職路


          文/紅樓,知乎地址:http://www.zhihu.com/people/hong-lou


          J2EE 部分:

          1. Switch能否用string做參數?

            1.                    Java           之前,          switch          只能支持byte,short,char,int          或者其對應的封裝類以及          Enum          類型。在JAVA          7中,String          支持被加上了。   

          2. equals與==的區別:

            1. ==是判斷兩個變量或實例是不是指向同一個內存空間
                         equals是判斷兩個變量或實例所指向的內存空間的值是不是相同 
          3. Object有哪些公用方法?

            1. 方法equals測試的是兩個對象是否相等

            2. 方法clone進行對象拷貝

            3. 方法getClass返回和當前對象相關的Class對象

            4. 方法notify,notifyall,wait都是用來對給定對象進行線程同步的

          4. Java的四種引用,強弱軟虛,用到的場景

            1. 利用軟引用和弱引用解決OOM問題:用一個HashMap來保存圖片的路徑和相應圖片對象關聯的軟引用之間的映射關系,在內存不足時,JVM會自動回收這些緩存圖片對象所占用的空間,從而有效地避免了OOM的問題

            2. 通過軟可及對象重獲方法實現Java對象的高速緩存:比如我們創建了一Employee的類,如果每次需要查詢一個雇員的信息。哪怕是幾秒中之前剛剛查詢過的,都要重新構建一個實例,這是需要消耗很多時間的。我們可以通過軟引用和            HashMap            的結合,先是保存引用方面:以軟引用的方式對一個Employee對象的實例進行引用并保存該引用到HashMap            上,key 為此雇員的            id,value為這個對象的軟引用,另一方面是取出引用,緩存中是否有該Employee實例的軟引用,如果有,從軟引用中取得。如果沒有軟引用,或者從軟引用中得到的實例是null,重新構建一個實例,并保存對這個新建實例的軟引用

            3. 強引用:如果一個對象具有強引用,它就不會被垃圾回收器回收。即使當前內存空間不足,JVM          也不會回收它,而是拋出 OutOfMemoryError        錯誤,使程序異常終止。如果想中斷強引用和某個對象之間的關聯,可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時間就會回收該對象

            4. 軟引用:在使用軟引用時,如果內存的空間足夠,軟引用就能繼續被使用,而不會被垃圾回收器回收,只有在內存不足時,軟引用才會被垃圾回收器回收。

            5. 弱引用:具有弱引用的對象擁有的生命周期更短暫。因為當 JVM        進行垃圾回收,一旦發現弱引用對象,無論當前內存空間是否充足,都會將弱引用回收。不過由于垃圾回收器是一個優先級較低的線程,所以并不一定能迅速發現弱引用對象

            6. 虛引用:顧名思義,就是形同虛設,如果一個對象僅持有虛引用,那么它相當于沒有引用,在任何時候都可能被垃圾回收器回收。

            7. 使用場景:

          5. Hashcode的作用,與 equal 有什么區別

            1. 同樣用于鑒定2個對象是否相等的,java集合中有 list 和 set 兩類,其中        set不允許元素重復實現,那個這個不允許重復實現的方法,如果用 equal 去比較的話,如果存在1000個元素,你 new        一個新的元素出來,需要去調用1000次 equal        去逐個和他們比較是否是同一個對象,這樣會大大降低效率。hashcode實際上是返回對象的存儲地址,如果這個位置上沒有元素,就把元素直接存儲在上面,如果這個位置上已經存在元素,這個時候才去調用equal方法與新元素進行比較,相同的話就不存了,散列到其他地址上

          6. String、StringBuffer與StringBuilder的區別

            1. String 類型和 StringBuffer        類型的主要性能區別其實在于 String 是不可變的對象

            2. StringBuffer和StringBuilder底層是 char[]數組實現的

            3. StringBuffer是線程安全的,而StringBuilder是線程不安全的


          7. Override和Overload的含義去區別

            1. Overload顧名思義是重新加載,它可以表現類的多態性,可以是函數里面可以有相同的函數名但是參數名、返回值、類型不能相同;或者說可以改變參數、類型、返回值但是函數名字依然不變。

            2. 就是ride(重寫)的意思,在子類繼承父類的時候子類中可以定義某方法與其父類有相同的名稱和參數,當子類在調用這一函數時自動調用子類的方法,而父類相當于被覆蓋(重寫)了。

          8. 抽象類和接口的區別

            1. 一個類只能繼承單個類,但是可以實現多個接口

            2. 接口強調特定功能的實現,而抽象類強調所屬關系

            3. 抽象類中的所有方法并不一定要是抽象的,你可以選擇在抽象類中實現一些基本的方法。而接口要求所有的方法都必須是抽象的

          9. 解析XML的幾種方式的原理與特點:DOM、SAX、PULL

            1. DOM:消耗內存:先把xml文檔都讀到內存中,然后再用DOM        API來訪問樹形結構,并獲取數據。這個寫起來很簡單,但是很消耗內存。要是數據過大,手機不夠牛逼,可能手機直接死機

            2. SAX:解析效率高,占用內存少,基于事件驅動的:更加簡單地說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束、文檔(document)結束等地方時通知事件處理函數,由事件處理函數做相應動作,然后繼續同樣的掃描,直至文檔結束。

            3. SAX:與 SAX        類似,也是基于事件驅動,我們可以調用它的next()方法,來獲取下一個解析事件(就是開始文檔,結束文檔,開始標簽,結束標簽),當處于某個元素時可以調用XmlPullParser的getAttributte()方法來獲取屬性的值,也可調用它的nextText()獲取本節點的值。

          10. wait()和sleep()的區別

            1. sleep來自Thread類,和wait來自Object類

            2. 調用sleep()方法的過程中,線程不會釋放對象鎖。而 調用 wait        方法線程會釋放對象鎖

            3. sleep睡眠后不出讓系統資源,wait讓出系統資源其他線程可以占用CPU

            4. sleep(milliseconds)需要指定一個睡眠時間,時間一到會自動喚醒

          11. JAVA 中堆和棧的區別,說下java 的內存機制

            1. 基本數據類型比變量和對象的引用都是在棧分配的

            2. 堆內存用來存放由new創建的對象和數組

            3. 類變量(static修飾的變量),程序在一加載的時候就在堆中為類變量分配內存,堆中的內存地址存放在棧中

            4. 實例變量:當你使用java關鍵字new的時候,系統在堆中開辟并不一定是連續的空間分配給變量,是根據零散的堆內存地址,通過哈希算法換算為一長串數字以表征這個變量在堆中的"物理位置”,實例變量的生命周期--當實例變量的引用丟失后,將被GC(垃圾回收器)列入可回收“名單”中,但并不是馬上就釋放堆中內存

            5. 局部變量:        由聲明在某方法,或某代碼段里(比如for循環),執行到它的時候在棧中開辟內存,當局部變量一但脫離作用域,內存立即釋放

          12. JAVA多態的實現原理 

            1. 抽象的來講,多態的意思就是同一消息可以根據發送對象的不同而采用多種不同的行為方式。(發送消息就是函數調用)

            2. 實現的原理是動態綁定,程序調用的方法在運行期才動態綁定,追溯源碼可以發現,JVM        通過參數的自動轉型來找到合適的辦法。

          13. JAVA 垃圾回收機制

            1. 標記回收法:遍歷對象圖并且記錄可到達的對象,以便刪除不可到達的對象,一般使用單線程工作并且可能產生內存碎片

            2. 標記-壓縮回收法:前期與第一種方法相同,只是多了一步,將所有的存活對象壓縮到內存的一端,這樣內存碎片就可以合成一大塊可再利用的內存區域,提高了內存利用率

            3. 復制回收法:把現有內存空間分成兩部分,gc運行時,它把可到達對象復制到另一半空間,再清空正在使用的空間的全部對象。這種方法適用于短生存期的對象,持續復制長生存期的對象則導致效率降低。 

            4. 分代回收發:把內存空間分為兩個或者多個域,如年輕代和老年代,年輕代的特點是對象會很快被回收,因此在年輕代使用效率比較高的算法。當一個對象經過幾次回收后依然存活,對象就會被放入稱為老年的內存空間,老年代則采取標記-壓縮算法

            5. 引用計數(最簡單古老的方法):指將資源(可以是對象、內存或磁盤空間等等)的被引用次數保存起來,當被引用次數變為零時就將其釋放的過程

            6. 對象引用遍歷(現在大多數 jvm            使用的方法):對象引用遍歷從一組對象開始,沿著整個對象圖上的每條鏈接,遞歸確定可到達(reachable)的對象。如果某對象不能從這些根對象的一個(至少一個)到達,則將它作為垃圾收集

            7. 什么是垃圾回收機:釋放那些不再持有引用的對象的內存

            8. 怎么判斷一個對象是否需要收集?

            9. 幾種垃圾回收機制 

          14. 講講 Java 中的集合有多少種,區別是什么?

            1. HashTable比較老,是基于Dictionary 類實現的,HashTable 則是基于            Map接口實現的

            2. HashTable 是線程安全的, HashMap 則是線程不安全的

            3. HashMap可以讓你將空值作為一個表的條目的key或value

            4. ArrayList、LinkedList、Vector的區別:ArrayList 和Vector底層是采用數組方式存儲數據,Vector由于使用了synchronized方法(線程安全)所以性能上比ArrayList要差,LinkedList使用雙向鏈表實現存儲,隨機存取比較慢

            5. HashMap的底層源碼實現:當我們往HashMap中put元素的時候,先根據key的hashCode重新計算hash值,根據hash值得到這個元素在數組中的位置(即下標),如果數組該位置上已經存放有其他元素了,那么在這個位置上的元素將以鏈表的形式存放,新加入的放在鏈頭,最先加入的放在鏈尾。如果數組該位置上沒有元素,就直接將該元素放到此數組中的該位置上。

            6. Fail-Fast機制:在使用迭代器的過程中有其他線程修改了map,那么將拋出ConcurrentModificationException,這就是所謂fail-fast機制。這一機制在源碼中的實現是通過modCount域,modCount顧名思義就是修改次數,對HashMap內容的修改都將增加這個值,那么在迭代器初始化過程中會將這個值賦給迭代器的expectedModCount。在迭代過程中,判斷modCount跟expectedModCount是否相等,如果不相等就表示已經有其他線程修改了Map.

            7. HashMap和 HashTable 的區別:


          Android部分:

          1. 注冊廣播有哪幾種方式,有什么區別

          2. 繪制 Activity 的生命流程圖

          3. 注冊Service需要注意什么

          4. Service與Activity怎么實現通信

          5. Handle通信具體到源碼,是怎么實現的

          6. Handle的機制

          7. 怎么實現ListView多種布局?

          8. ListView與數據庫綁定的實現

          9. 怎么實現一個部分更新的 ListView?

          10. ListView卡頓的原因與性能優化,說的越多越好

          11. Android中的動畫有哪些,區別是什么

          12. JNI怎么使用

          13. 說說內存泄露的情況有哪些

          14. OOM是怎么引起的?怎么盡量避免 OOM 問題的出現

          15. 什么是 ANR 問題?為什么會引起 ANR 問題?

          16. Socker編程的步驟

          17. 設計一個圖片緩存加載機制

          18. Fragment嵌套多個Fragment會出現bug嗎

          19. Activity中如何動態的添加Fragment

          20. 內存不足時,怎么保持Activity的一些狀態,在哪個方法里面做具體操作?

          21. Scrollview怎么判斷是否滑倒底部

          22. ViewPager 的怎么做性能優化

          23. Asynctask具體用法?

          24. Asynctask的Do in background方法是怎么通知UI線程刷新進度條的?

          25. Asynctask的Do in background方法默認是返回 true    ,表示任務完成,如果想返回具體的數據呢,怎么做。如果Activity被銷毀了,還會執行到postexcutd方法嗎?

          26. View中onTouch,onTouchEvent,onClick的執行順序

          27. 不使用動畫,怎么實現一個動態的 View?

          28. Postvalidata與Validata有什么區別?

          29. Asset與raw都能存放資源,他們有什么區別?

          30. 如何自定義ViewGroup?

          31. 什么是 MVC 模式?MVC 模式的好處是什么?

          32. JVM 和Dalvik虛擬機的區別

          33. 應用常駐后臺,避免被第三方殺掉的方法,講講你用過的奇淫巧技?

          34. 數據持久化的四種方式有哪些?


          數據結構與算法部分:

          1. 給最外層的rootview,把這個根視圖下的全部button背景設置成紅色,手寫代碼,不許用遞歸

          2. 給一串字符串比如abbbcccd,輸出a1b3c3d1,手寫代碼(注意有個別字符可能會出現十次以上的情況)

          3. 一個序列,它的形式是12349678,9是最高峰,經歷了一個上升又下降的過程,找出里面的最大值的位置,要求效率盡可能高

          4. 二叉查找樹的刪除操作,手寫代碼

          5. 反轉鏈表,手寫代碼

          6. 二分查找,手寫代碼

          7. 有海量條      url,其中不重復的有300萬條,現在希望挑選出重復出現次數最高的    url,要求效率盡可能的高

          8. 一篇英語文章,去掉字符只留下k個,如何去掉才能使這k個字符字典序最小

          9. 弗洛伊德算法和 Dijkstra算法的區別?復雜度是多少?講講 Dijkstra算法的具體過程

          10. 反轉字符串,要求手寫代碼,優化速度、優化空間

          11. 給出兩個無向圖,找出這2個無向圖中相同的環路。手寫代碼

          12. 單例模式,手寫代碼

          13. 生產者與消費者,手寫代碼

          14. 二叉樹鏡像,手寫代碼

          15. 最長不重復子串(最長重復子串),手寫代碼


          操作系統部分:

          1. 分別從操作系統的內存角度與進程線程角度解釋分析堆,棧二者的區別

          2. 什么是事務?

          3. OSI七層模型有哪些,各層次的作用

          4. TCP的三次握手過程,四次揮手過程,為什么需要三次?

          5. 說說操作系統中進程的通信方式

          6. 瀏覽器輸入地址之后,之后的過程

          7. 談談 HTTP 中Get 和 Post 方法的區別?

          您可以還會對下面的文章感興趣:

        1. 從哪幾個方面判斷你拿到的是個好的offer?
        2. 畢業生如何落戶北京、上海
        3. 女web前端程序猿求職面試經歷 請像漢子一樣的去戰斗
        4. 2016就業季,關于勞動合同的那些事兒你需要知道
        5. 2016年公務員面試高分經驗:面試成功的3大法則
        6. 最新評論

          查找内蒙古快三走势图

            <th id="zdz9p"></th>

                <th id="zdz9p"><progress id="zdz9p"><listing id="zdz9p"></listing></progress></th>

                    <th id="zdz9p"></th>

                        <th id="zdz9p"><progress id="zdz9p"><listing id="zdz9p"></listing></progress></th>