1. 程式人生 > >2017 年初、阿里、騰訊、百度、華為、京東、搜狗和滴滴面試題彙集

2017 年初、阿里、騰訊、百度、華為、京東、搜狗和滴滴面試題彙集

前言:前一段時間和大家交流,據反饋現在Android崗位也沒有以前那麼多了,當然這不意味著飽和,只是市場更趨於合理一些,就像深圳房價一樣,以前破天慌的漲,新政出來後,房價慢慢趨向合理一樣。Android還有有很多機會的。最近結合一些面試的同學(包含社招和校招),整理了下一些面試題目。實際上,很多面試題網上都能找得到。很多人說,完全可以背答案,我不這麼看。背的和實際開發遇到的,說出來是不一樣的。舉例,你是怎麼使用多執行緒的?這個問題。背的答案,往往向裡面一細問,可能就不知道了。話不多說,我整理面試題如下,供大家參考,知道比沒知道的好。可以幫大家查漏不缺。以下是(騰訊,百度,華為,搜狗和滴滴 這些廠的面試題)

最新整理

  1. 簡述synchronized?Object;Monitor機制;
  2. 簡述happen-before規則;
  3. JUC和Object;Monitor機制區別是什麼;簡述AQS原理;
  4. 簡述DCL失效原因,解決方法;
  5. 簡述nio原理;
  6. jvm執行時資料區域有哪幾部分組成,各自作用;
  7. gc演算法有哪些;gc收集器有哪些;
  8. 簡述class載入各階段過程;class;loader有哪些模型;
  9. 簡述常用的JDK命令列工具;
  10. 簡述位元組碼檔案組成;
  11. 講講你平常是如何針對具體的SQL做優化;
  12. mysql的儲存引擎有哪些,區別;
  13. gc:記憶體模型;
  14. gc:垃圾回收;
  15. 多執行緒:如何實現一個定時排程和迴圈排程的工具類。但提交任務處理不過來的時候,拒絕機制應該如何處理;執行緒池預設有哪幾種拒絕機制;
  16. 多執行緒:如何實現一個ThreadLocal;
  17. 說說你瞭解的一個執行緒安全佇列;
  18. Atomic包的實現原理是什麼;
  19. CAS又是怎麼保證原子性的;
  20. string分析1000次迴圈subString用了多少記憶體;

Android基礎

  1. 什麼是ANR 如何避免它?答:在Android 上,如果你的應用程式有一段時間響應不夠靈敏,系統會向用戶顯示一個對話方塊,這個對話方塊稱作應
    用程式無響應(ANR:Application Not
    Responding)對話方塊。使用者可以選擇讓程式繼續執行,但是,他們在使用你的應用程式時,並不希望每次都要處理這個對話方塊。因此,在程式裡對響應效能的設計很重要,這樣,系統不會顯示ANR
    給使用者。 不同的元件發生ANR 的時間不一樣,主執行緒(Activity、Service)是5 秒,BroadCastReceiver
    是10 秒。 解決方案: 將所有耗時操作,比如訪問網路,Socket 通訊,查詢大量SQL 語句,複雜邏輯計算等都放在子執行緒中去,然後
    通過handler.sendMessage、runonUITread、AsyncTask
    等方式更新UI。無論如何都要確保使用者介面操作的流暢度。 如果耗時操作需要讓使用者等待,那麼可以在介面上顯示進度條。
  2. View的繪製流程;自定義View如何考慮機型適配;自定義View的事件分發機制;View和ViewGroup分別有哪些事件分發相關的回撥方法;自定義View如何提供獲取View屬性的介面;
  3. Art和Dalvik對比;虛擬機器原理,如何自己設計一個虛擬機器(記憶體管理,類載入,雙親委派);JVM記憶體模型及類載入機制;記憶體物件的迴圈引用及避免;
  4. ddms 和 traceView的區別;
  5. 記憶體回收機制與GC演算法(各種演算法的優缺點以及應用場景);GC原理時機以及GC物件;記憶體洩露場景及解決方法;
  6. 四大元件及生命週期;ContentProvider的許可權管理(讀寫分離,許可權控制-精確到表級,URL控制);Activity的四種啟動模式對比;Activity狀態保存於恢復;
  7. 什麼是AIDL 以及如何使用;
  8. 請解釋下在單執行緒模型中Message、Handler、Message Queue、Looper之間的關係;
  9. Fragment生命週期;Fragment狀態儲存;
  10. startActivityForResult是哪個類的方法,在什麼情況下使用,如果在Adapter中使用應該如何解耦;
  11. AsyncTask原理及不足;ntentService原理;
  12. Activity 怎麼和Service 繫結,怎麼在Activity 中啟動自己對應的Service;
  13. 請描述一下Service 的生命週期;
  14. AstncTask+HttpClient與AsyncHttpClient有什麼區別;
  15. 如何保證一個後臺服務不被殺死;比較省電的方式是什麼;
  16. 如何通過廣播攔截和abort一條簡訊;廣播是否可以請求網路;廣播引起anr的時間限制;
  17. 程序間通訊,AIDL;
  18. 事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?
  19. 說說ContentProvider、ContentResolver、ContentObserver 之間的關係;
  20. 請介紹下ContentProvider 是如何實現資料共享的;
  21. Handler機制及底層實現;
  22. Binder機制及底層實現;
  23. ListView 中圖片錯位的問題是如何產生的;
  24. 在manifest 和程式碼中如何註冊和使用BroadcastReceiver;
  25. 說說Activity、Intent、Service 是什麼關係;
  26. ApplicationContext和ActivityContext的區別;
  27. 一張Bitmap所佔記憶體以及記憶體佔用的計算;
  28. Serializable 和Parcelable 的區別;
  29. 請描述一下BroadcastReceiver;
  30. 請描述一下Android 的事件分發機制;
  31. 請介紹一下NDK;
  32. 什麼是NDK庫,如何在jni中註冊native函式,有幾種註冊方式;
  33. AsyncTask 如何使用;
  34. 對於應用更新這塊是如何做的?(灰度,強制更新,分割槽域更新);
  35. 混合開發,RN,weex,H5,小程式(做Android的瞭解一些前端js等還是很有好處的);
  36. 什麼情況下會導致記憶體洩露;
  37. 如何對Android 應用進行效能分析以及優化;
  38. 說一款你認為當前比較火的應用並設計(直播APP);
  39. OOM的避免異常及解決方法;
  40. 螢幕適配的處理技巧都有哪些;
  41. 兩個Activity 之間跳轉時必然會執行的是哪幾個方法?答:一般情況下比如說有兩個activity,分別叫A,B,當在A 裡面啟用B
    元件的時候, A 會呼叫onPause()方法,然後B 呼叫onCreate() ,onStart(), onResume()。
    這個時候B 覆蓋了窗體, A 會呼叫onStop()方法. 如果B 是個透明的,或者是對話方塊的樣式, 就不會呼叫A 的
    onStop()方法。

Java基礎

  1. 集合類以及集合框架;HashMap與HashTable實現原理,執行緒安全性,hash衝突及處理演算法;ConcurrentHashMap;
  2. 程序和執行緒的區別;
  3. Java的併發、多執行緒、執行緒模型;
  4. 什麼是執行緒池,如何使用? 答:執行緒池就是事先將多個執行緒物件放到一個容器中,當使用的時候就不用new 執行緒而是直接去池中拿執行緒即可,節省了開闢子執行緒的時間,提高的程式碼執行效率。
  5. 資料一致性如何保證;Synchronized關鍵字,類鎖,方法鎖,重入鎖;
  6. Java中實現多型的機制是什麼;靠的是父類或介面定義的引用變數可以指向子類或具體實現類的例項物件,而程式呼叫的方法在執行期才動態繫結,就是引用變數所指向的具體例項物件的方法,也就是記憶體里正在執行的那個物件的方法,而不是引用變數的型別中定義的方法
  7. 如何將一個Java物件序列化到檔案裡;
  8. 說說你對Java反射的理解; 答:Java 中的反射首先是能夠獲取到Java 中要反射類的位元組碼, 獲取位元組碼有三種方法,
    1.Class.forName(className) 2.類名.class 3.this.getClass()。然後將位元組碼中的方法,變數,建構函式等對映成相應的Method、Filed、Constructor 等類,這些類提供了豐富的方法可以被我們所使用。
  9. 同步的方法;多程序開發以及多程序應用場景; 在Java中wait和seelp方法的不同;答:最大的不同是在等待時wait 會釋放鎖,而sleep 一直持有鎖。wait 通常被用於執行緒間互動,sleep 通常被用於暫停執行。
  10. synchronized 和volatile
    關鍵字的作用;答:1)保證了不同執行緒對這個變數進行操作時的可見性,即一個執行緒修改了某個變數的值,這新值對其他執行緒來說是立即可見的。2)禁止進行指令重排序。
    volatile 本質是在告訴jvm 當前變數在暫存器(工作記憶體)中的值是不確定的,需要從主存中讀取;synchronized
    則是鎖定當前變數,只有當前執行緒可以訪問該變數,其他執行緒被阻塞住。
    1.volatile 僅能使用在變數級別;synchronized 則可以使用在變數、方法、和類級別的
    2.volatile 僅能實現變數的修改可見性,並不能保證原子性;synchronized 則可以保證變數的修改可見性和原子性
    3.volatile 不會造成執行緒的阻塞;synchronized 可能會造成執行緒的阻塞。
    4.volatile 標記的變數不會被編譯器優化;synchronized 標記的變數可以被編譯器優化 伺服器只提供資料接收介面,在多執行緒或多程序條件下,如何保證資料的有序到達;
  11. ThreadLocal原理,實現及如何保證Local屬性;
  12. String StringBuilder StringBuffer對比;
  13. 你所知道的設計模式有哪些; 答:Java 中一般認為有23
    種設計模式,我們不需要所有的都會,但是其中常用的幾種設計模式應該去掌握。下面列出了所有的設計模式。需要掌握的設計模式我單獨列出來了,當然能掌握的越多越好。
    總體來說設計模式分為三大類: 建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
    結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
    行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。
  14. Java如何呼叫c、c++語言;
  15. 介面與回撥;回撥的原理;寫一個回撥demo;
  16. 泛型原理,舉例說明;解析與分派;
  17. 抽象類與介面的區別;應用場景;抽象類是否可以沒有方法和屬性;
  18. 靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?
  19. 修改物件A的equals方法的簽名,那麼使用HashMap存放這個物件例項的時候,會呼叫哪個equals方法;
  20. 說說你對泛型的瞭解;
  21. Java的異常體系;
  22. 如何控制某個方法允許併發訪問執行緒的個數;
  23. 動態代理的區別,什麼場景使用;
  24. java為什麼要有介面;介面是用來規範類的它可以避免類在設計上的不一致,這在多人合作的開發中猶為重要,就比如介面中有A方法,那麼實現這個介面就必須實現A方法這就形成了一種規範。

資料結構與演算法

  1. 堆和棧在記憶體中的區別是什麼(資料結構方面以及實際實現方面)
  2. 最快的排序演算法是哪個?給阿里2萬多名員工按年齡排序應該選擇哪個演算法?堆和樹的區別;寫出快排程式碼;連結串列逆序程式碼
  3. 求1000以內的水仙花數以及40億以內的水仙花數
  4. 子串包含問題(KMP 演算法)寫程式碼實現
  5. 萬億級別的兩個URL檔案A和B,如何求出A和B的差集C,(Bit對映->hash分組->多檔案讀寫效率->磁碟定址以及應用層面對定址的優化)
  6. 蟻群演算法與蒙特卡洛演算法
  7. 寫出你所知道的排序演算法及時空複雜度,穩定性
  8. 百度POI中如何試下查詢最近的商家功能(座標映象+R樹)

其他

  1. 死鎖的四個必要條件
  2. 常見編碼方式;utf-8編碼中的中文佔幾個位元組;int型幾個位元組
  3. 實現一個Json解析器(可以通過正則提高速度)
  4. MVC MVP MVVM; 常見的設計模式;寫出觀察者模式的程式碼
  5. TCP的3次握手和四次揮手;TCP與UDP的區別
  6. HTTP協議;HTTP1.0與2.0的區別;HTTP報文結構
  7. HTTP與HTTPS的區別以及如何實現安全性

非技術問題彙總

研究比較深入的領域有哪些
對業內資訊的關注渠道有哪些
最近都讀哪些書
自己最擅長的技術點,最感興趣的技術領域和技術點
專案中用了哪些開源庫,如何避免因為引入開源庫而導致的安全性和穩定性問題
實習過程中做了什麼,有什麼產出
5枚硬幣,2正3反如何劃分為兩堆然後通過翻轉讓兩堆中正面向上的硬幣和反面向上的硬幣個數相同
時針走一圈,時針分針重合幾次
N * N的方格紙,裡面有多少個正方形
現在下載速度很慢,試從網路協議的角度分析原因,並優化(網路的5層都可以涉及)

HR問題彙總

您在前一家公司的離職原因是什麼?
講一件你印象最深的一件事情;
介紹一個你影響最深的專案;
介紹你最熱愛最擅長的專業領域;
公司實習最大的收穫是什麼;
與上級意見不一致時,你將怎麼辦;
自己的優點和缺點是什麼?並舉例說明?
你的學習方法是什麼樣的?實習過程中如何學習?實習專案中遇到的最大困難是什麼以及如何解決的;
說一件最能證明你能力的事情;
針對你你申請的這個職位,你認為你還欠缺什麼;
如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎麼辦;
專案中遇到最大的困難是什麼?如何解決的;
你的職業規劃以及個人目標;未來發展路線及求職定位;
如果你在這次面試中沒有被錄用,你怎麼打算;
評價下自己,評價下自己的技術水平,個人程式碼量如何;
通過哪些渠道瞭解的招聘資訊,其他同學都投了哪些公司;
業餘都有哪些愛好;
你做過的哪件事最令自己感到驕傲;
假如你晚上要去送一個出國的同學去機場,可單位臨時有事非你辦不可,你怎麼辦;
就你申請的這個職位,你認為你還欠缺什麼;
當前的offer狀況;如果BATH都給了offer該如何選;
你對一份工作更看重哪些方面?平臺,技術,氛圍,城市,money;
理想薪資範圍;杭州崗和北京崗選哪個;
理想中的工作環境是什麼;
談談你對跳槽的看法;
說說你對行業、技術發展趨勢的看法;
實習過程中周圍同事/同學有哪些值得學習的地方;
家人對你的工作期望及自己的工作期望;
如果你的工作出現失誤,給本公司造成經濟損失,你認為該怎麼辦;
若上司在公開會議上誤會你了,該如何解決;
是否可以實習,可以實習多久;
在五年的時間內,你的職業規劃;
你看中公司的什麼?或者公司的那些方面最吸引你。

推薦文章
1、Android面試經驗大解密
2、Android的viewHolder模式解剖

3、Android中必須學習的八大開源專案(開發專案必看)

4、如何自學Android, 教大家玩爆Android(成為大神必看)

5、2016 Google hosts 持續更新【更新 於:2016-08-27】(免費翻牆必備)

6、Android面試經驗總結(面試成功必備)

7、Android Studio 個性化設定(裝逼必備)

8、Android Studio 2.2 正式起航(玩爆Android Studio 2.2必備)

9、Android Studio 2.3 正式起航(玩爆Android Studio 2.3必備)
Android Studio 2.2 新功能例項程式碼:

Android Studio 2.2新功能例項原始碼(玩爆Android Studio 2.2必備)

Android Studio 2.2新功能介紹:

What’s new in Android development tools - Google I/O 2016(YouTube視訊需要自備梯子)

【技術群】279126311 [滿]

【技術群】484572225 [未]

【Email】[email protected]

Android Studio 2.2 新功能例項程式碼:

Android Studio 2.2新功能例項原始碼(玩爆Android Studio 2.2必備)

相關推薦

2017 年初阿里京東滴滴試題彙集

前言:前一段時間和大家交流,據反饋現在Android崗位也沒有以前那麼多了,當然這不意味著飽和,只是市場更趨於合理一些,就像深圳房價一樣,以前破天慌的漲,新政出來後,房價慢慢趨向合理一樣。Android還有有很多機會的。最近結合一些面試的同學(包含社招和校招

2018年終總結:阿里京東滴滴試題彙集

最新整理 簡述synchronized?Object;Monitor機制; 簡述happen-before規則 ; JUC和Object ; Monitor機制區別是什麼 ; 簡述AQS原理 ; 簡述DCL失效原因,解決方法 ; 簡述nio原理 ;

2016年未,滴滴Android試題

Android基礎 View的繪製流程;自定義View如何考慮機型適配;自定義View的事件分發機制;View和ViewGroup分別有哪些事件分發相關的回撥方法;自定義View如何提供獲取View

android面試90問,阿里小米公司

基礎問題相關 1、介面的意義-百度 2、抽象類的意義-百度 3、內部類的作用-樂視4、Java 虛擬機器的特性-百度-樂視5、哪些情況下的物件會被垃圾回收機制處理掉-美團-小米6、程序和執行緒的區別-獵豹-美團7、java中==和equals和hashCode的區別-樂視8、H

2017年秋季校招前端面經(,網易,,樂視等)

優勢 end 曾經 agg line 網上 秋季 期望 概念 華為實習生面試(人生第一面,4月份):那時候學了前端兩月有余,很多傻傻不知道。 面試官人蠻好的,問了很多我都不知道,所以什麽方面都問了一些,不過最後還是說了句,算你過了。 技術面:   自我介紹語言混,沒有邏輯

努力爭取阿里iOS實習崗位被拒,一年後為什麼我還能拿到,包括阿里的Offer?

想起去年這個時候,我還在努力地去爭取阿里巴巴的實習offer,轉眼間已經到了快畢業的時間了,時間真快,真是一把殺豬刀。經歷過去年阿里“擁抱變化”之後,懷著悲傷的心情,打著“我想去外面看看”的心態面試著一家又一家的企業。最終拿了很多offer,包括百度、騰訊,還有曾經拋棄過我的

阿里的面試經驗

小白看了此同仁的面試經久久不能平復,感嘆自己菜鳥的同時,痛惡自己對於時間的浪費,大學時期的小白真的很瀟灑,工作到現在的小白也是偷得浮生半日閒的小瀟灑,想練就下面的同仁的水平,小白不吃不喝還需要2年,小白在吐血,故發帖在此,向這位仁兄學習!!2年的時間,我能變成什麼樣,今天是

筆面試經驗

騰訊百度遊戲網易華為 面試完畢,已跟網易遊戲簽約。遂敲一份筆經面經,記錄下面試經過。類似於用日記記錄自己,同時希望對師弟師妹有一定幫助。不是炫耀,只是希望攢RP,希望各位不要鄙視我。正所謂“飲水思源”。小弟來自廣州華南理工大學,電腦科學與工程學院。給華工計算機打一個廣告

我如何用六個月時間拿到網易遊戲,,美團,的offer的

2017年9月27日,武漢陰轉小雨,走出金盾酒店,看了眼灰濛濛的天,我長長舒了一口氣,這是半年來第一次放鬆心情,因為我知道,我的校招結束了。 阿里實習生面試 回想6個月之前,三月份,我第一次參加阿里菜

?程式設計師大廠實習經歷經驗談

點選上方“程式人生”,選擇“置頂公眾號”第一時間關注程式猿(媛)身邊的故事圖片源自:Westwo

這屆網際網路公司月餅:阿里卡哇伊,酷炫風,京東乾隆審美……

哈嘍程式設計師朋友們大家好哇,今天就正式開啟中秋小長假啦,公司的月餅都發了嗎? 這幾天,朋友圈儼然已成為各大網際網路公司的月餅 PK 戰場,爭奇鬥豔,好不熱鬧。 日常,普通人拼車拼房拼自己,而放到各大網際網路公司上,就是拼員工拼技術拼實力。 每逢佳節,普通人

從0開始搭建阿里雲(雲)ubuntu16.04 nodejs + nginx + mysql + pm2 服務(一搭建nopdejs環境)

sudo apt-get install nodejs sudo apt-get install npm 特別注意:Ubuntu中可執行的名字是nodejs而不是node 輸入命令列nodejs -v 檢視node版本 如果node不是最新的,node有一個

新購雲主機安全組未放行導致網站資料庫無法訪問

國內雲主機國內有騰訊雲主機和阿里雲主機這兩大巨頭,無論從配置、訪問速度、安全性上來說都是國內數一數二的了。最近網友買了一臺騰訊雲主機,打算遷移網站過去,安裝 lnmp 環境後無法開啟網站和資料庫,找魏艾斯部落格求助,看了一下是新買的騰訊雲主機安全組未放行導致網站、資料庫無法訪

地圖手機端單觸點單擊長按事件,解決部分手機(小米手機)地圖單擊事件失效,多觸點拖動依然觸發長按的bug

|| ble apply timeout console dto eat 問題 int /** * Author 嶽曉 * * 對百度地圖的事件擴展,目前擴展了fastclick和longclick, * 解決某些設備click不執行的問題

Python調用地圖API(路線規劃POI檢索)——第一部分

api mil 申請 eap pos ice poi檢索 pytho 例如 項目的目的是為了查詢某個點附近某些POI的最近距離,例如查詢天安門到附近最近的商場的距離(時間) 1.百度地圖API 程序中用到百度地圖的兩個API,分別是 (1)路線規劃服務(又名Directio

2017校招真題 --編碼

class btn -h aaa 函數 字典序排序 -o stream title 題目描述 假定一種編碼的編碼範圍是a ~ y的25個字母,從1位到4位的編碼,如果我們把該編碼按字典序排序,形成一個數組如下: a, aa, aaa, aaaa, aaab, aaac,

Java開發利器:IntelliJ IDEA的安裝配置與使用 視訊教程 雲盤

IntelliJ IDEA是一款功能強大的開發工具,在程式碼自動提示、重構、J2EE支援、各類版本工具(如git、svn、github)、maven等方面都有很好的應用。IntelliJ IDEA有免費的社群版和付費的旗艦版。免費版只支援Java等為數不多的語言和基本的IDE特性,旗艦版還支

解決IEfirefox瀏覽器下JS的new Date()的值Invalid DateNaN-NaN的問題

最近寫js遇到一個問題,時間轉換的時候出現了NAN,在谷歌瀏覽器上是ok的,在IE上面就出現了NaN, 只要將 var data="2018-07-17 09:00:00"; //將所有的“-”轉換為“/”就ok了 data=data.replace(new RegExp(/-/gm

Requests rejson庫解析下載,千千音樂檔案

剛步入Python學習它,記錄自己的軌跡,加油學習。 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 import requests 5 import re 6 import json 7 8 9 class

阿里等網際網路公司,Java開發的最新招聘標準

金九銀十的跳槽熱潮已經過去了,在這兩個月的跳槽的旺季中,作為網際網路行業的三大巨頭,百度、阿里巴巴、騰訊對於網際網路人才有很大的吸引力,他們的員工也是眾多網際網路同行覬覦的資深工程師、管理者人選。 下面我總結了進入這三家公司你所需掌握的技能: 阿里巴巴篇 紮實的計算機專業基礎,包括演算法