阿里、騰訊、百度、華爲、京東、搜狗和滴滴最新面試題聚集【轉】

Android基礎前端

  • 一、什麼是ANR 如何避免它?java

  • 若是耗時操做須要讓用戶等待,那麼能夠在界面上顯示進度條。c++

  • 二、View的繪製流程;自定義View如何考慮機型適配;自定義View的事件面試

  • 三、分發機制;View和ViewGroup分別有哪些事件分發相關的回調方法;自定義View如何提供獲取View屬性的接口;算法

  • 四、Art和Dalvik對比;虛擬機原理,如何本身設計一個虛擬機(內存管理,類加載,雙親委派);JVM內存模型及類加載機制;內存對象的循環引用及避免;小程序

  • 四、ddms 和 traceView;設計模式

    五、內存回收機制與GC算法(各類算法的優缺點以及應用場景);GC原理時機以及GC對象;內存泄露場景及解決方法;安全

  • 六、四大組件及生命週期;ContentProvider的權限管理(讀寫分離,權限控制-精確到表級,URL控制);Activity的四種啓動模式對比;Activity狀態保存於恢復;服務器

  • 七、什麼是AIDL 以及如何使用;weex

  • 八、請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關係;

  • 九、Fragment生命週期;Fragment狀態保存startActivityForResult是哪一個類的方法,在什麼狀況下使用,若是在Adapter中使用應該如何解耦;

  • 十、AsyncTask原理及不足;ntentService原理;

  • 十一、Activity 怎麼和Service 綁定,怎麼在Activity 中啓動本身對應的Service;

  • 十二、請描述一下Service 的生命週期;

    1三、AstncTask+HttpClient與AsyncHttpClient有什麼區別;

  • 1四、如何保證一個後臺服務不被殺死;比較省電的方式是什麼;

    1五、如何經過廣播攔截和abort一條短信;廣播是否能夠請求網絡;廣播引發anr的時間限制;

  • 1六、進程間通訊,AIDL;

  • 1七、事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?

  • 1八、說說ContentProvider、ContentResolver、ContentObserver 之間的關係;

  • 19請介紹下ContentProvider 是如何實現數據共享的;

  • 20、Handler機制及底層實現;

  • 2一、Binder機制及底層實現;

  • 2二、ListView 中圖片錯位的問題是如何產生的;

  • 2三、在manifest 和代碼中如何註冊和使用BroadcastReceiver;

  • 2四、說說Activity、Intent、Service 是什麼關係;

  • 2五、ApplicationContext和ActivityContext的區別;

  • 2六、一張Bitmap所佔內存以及內存佔用的計算;

  • 2七、Serializable 和Parcelable 的區別;

  • 2八、請描述一下BroadcastReceiver;

  • 2九、請描述一下Android 的事件分發機制;

  • 30、請介紹一下NDK;

  • 3一、什麼是NDK庫,如何在jni中註冊native函數,有幾種註冊方式;

  • 3二、AsyncTask 如何使用;

  • 3三、對於應用更新這塊是如何作的?(灰度,強制更新,分區域更新);

  • 3四、混合開發,RN,weex,H5,小程序(作Android的瞭解一些前端js等仍是頗有好處的);

  • 3五、什麼狀況下會致使內存泄露;

  • 3六、如何對Android 應用進行性能分析以及優化;

  • 3七、說一款你認爲當前比較火的應用並設計(直播APP);

  • 3八、OOM的避免異常及解決方法;

  • 3九、屏幕適配的處理技巧都有哪些;

  • 40、兩個Activity 之間跳轉時必然會執行的是哪幾個方法?

  • 40、Okhttp原理

  • 4一、Rxjava用法和原理

  • 42,熱更新技術有哪些,知道的原理!

  • 4三、Activity啓動流程

  • 4四、Android內存管理

  • 4五、Android權限管理

  • 4六、將一下7.0的新特性

  • 4七、說下你大家項目的架構

  • 4八、組件化的有點和具體實施方案

  • 4九、內存泄露檢測方法

  • 50、Http協議,SSL握手機制。

 

Java基礎

  • 一、集合類以及集合框架;HashMap與HashTable實現原理,線程安全性,hash衝突及處理算法;ConcurrentHashMap;

  • 二、進程和線程的區別;

  • 三、Java的併發、多線程、線程模型;

  • 四、什麼是線程池,如何使用?

  • 答:線程池就是事先將多個線程對象放到一個容器中,當使用的時候就不用new 線程而是直接去池中拿線程便可,節省了開闢子線程的時間,提升的代碼執行效率。

    五、數據一致性如何保證;Synchronized關鍵字,類鎖,方法鎖,重入鎖;

    六、Java中實現多態的機制是什麼;

  • 七、如何將一個Java對象序列化到文件裏;

    八、說說你對Java反射的理解;

  • 答:Java 中的反射首先是可以獲取到Java 中要反射類的字節碼, 獲取字節碼有三種方法,
    1.Class.forName(className)

  • 2.類名.class

  • 3.this.getClass()。

  • 而後將字節碼中的方法,變量,構造函數等映射成相應的Method、Filed、Constructor 等類,這些類提供了豐富的方法能夠被咱們所使用。

  • 四、同步的方法;多進程開發以及多進程應用場景;

    五、在Java中wait和seelp方法的不一樣;

  • 答:最大的不一樣是在等待時wait 會釋放鎖,而sleep 一直持有鎖。wait 一般被用於線程間交互,sleep 一般被用於暫停執行。

  • synchronized 和volatile 關鍵字的做用;

  • 答:

  • 1)保證了不一樣線程對這個變量進行操做時的可見性,即一個線程修改了某個變量的值,這新值對其餘線程來講是當即可見的。

  • 2)禁止進行指令重排序。

  • volatile 本質是在告訴jvm 當前變量在寄存器(工做內存)中的值是不肯定的,須要從主存中讀取;synchronized 則是鎖定當前變量,只有當前線程能夠訪問該變量,其餘線程被阻塞住。
    1.volatile 僅能使用在變量級別;synchronized 則可使用在變量、方法、和類級別的
    2.volatile 僅能實現變量的修改可見性,並不能保證原子性;synchronized 則能夠保證變量的修改可見性和原子性
    3.volatile 不會形成線程的阻塞;synchronized 可能會形成線程的阻塞。
    4.volatile 標記的變量不會被編譯器優化;synchronized 標記的變量能夠被編譯器優化

  • 六、服務器只提供數據接收接口,在多線程或多進程條件下,如何保證數據的有序到達;

  • 七、ThreadLocal原理,實現及如何保證Local屬性;

    /八、String StringBuilder StringBuffer對比;

    九、你所知道的設計模式有哪些;

  • 答:

  • Java 中通常認爲有23 種設計模式,咱們不須要全部的都會,可是其中經常使用的幾種設計模式應該去掌握。下面列出了全部的設計模式。須要掌握的設計模式我單獨列出來了,固然能掌握的越多越好。
    整體來講設計模式分爲三大類:
    建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
    結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
    行爲型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

  • 十、Java如何調用c、c++語言;

  • 十一、接口與回調;回調的原理;寫一個回調demo;

  • 十二、泛型原理,舉例說明;解析與分派;

  • 1三、抽象類與接口的區別;應用場景;抽象類是否能夠沒有方法和屬性;

  • 1四、靜態屬性和靜態方法是否能夠被繼承?是否能夠被重寫?以及緣由?

  • 1五、修改對象A的equals方法的簽名,那麼使用HashMap存放這個對象實例的時候,會調用哪一個equals方法;

  • 1六、說說你對泛型的瞭解;

  • 1七、Java的異常體系;

  • 1八、如何控制某個方法容許併發訪問線程的個數;

    1九、動態代理的區別,什麼場景使用;

  • 20.、Dex加載過程和優化方式

  • 2一、Jvm和Gc機制

  • 2二、經常使用的設計模式

     

數據結構與算法

 

  • 一、堆和棧在內存中的區別是什麼(數據結構方面以及實際實現方面);

    二、最快的排序算法是哪一個?給阿里2萬多名員工按年齡排序應該選擇哪一個算法?堆和樹的區別;寫出快排代碼;鏈表逆序代碼;

    三、求1000之內的水仙花數以及40億之內的水仙花數;

    四、子串包含問題(KMP 算法)寫代碼實現;

    五、萬億級別的兩個URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分組->多文件讀寫效率->磁盤尋址以及應用層面對尋址的優化)

  • 6蟻羣算法與蒙特卡洛算法;

    七、寫出你所知道的排序算法及時空複雜度,穩定性;

    八、百度POI中如何試下查找最近的商家功能(座標鏡像+R樹)。

  • 九、遍歷二叉樹

  • 十、本身集合實現一個隊列

  • 十一、本身實現線程安全類

  • 十二、快速排序和冒泡的排序,怎麼轉換一下。

     

其餘

  • 一、死鎖的四個必要條件;

    二、常見編碼方式;utf-8編碼中的中文佔幾個字節;int型幾個字節;

    三、實現一個Json解析器(能夠經過正則提升速度);

  • 四、MVC MVP MVVM; 常見的設計模式;寫出觀察者模式的代碼;

  • 五、TCP的3次握手和四次揮手;TCP與UDP的區別;

  • 六、HTTP協議;HTTP1.0與2.0的區別;HTTP報文結構;

  • 七、HTTP與HTTPS的區別以及如何實現安全性;

  • 八、都使用過哪些框架、平臺;

    九、都使用過哪些自定義控件;

    十、介紹你作過的哪些項目;

 

非技術問題彙總

  • 一、研究比較深刻的領域有哪些;

  • 二、對業內信息的關注渠道有哪些;

  • 三、最近都讀哪些書;

  • 四、本身最擅長的技術點,最感興趣的技術領域和技術點;

  • 五、項目中用了哪些開源庫,如何避免由於引入開源庫而致使的安全性和穩定性問題;

  • 六、實習過程當中作了什麼,有什麼產出;

  • 七、5枚硬幣,2正3反如何劃分爲兩堆而後經過翻轉讓兩堆中正面向上的硬8幣和反面向上的硬幣個數相同;

  • 八、時針走一圈,時針分針重合幾回;

  • 九、N * N的方格紙,裏面有多少個正方形;

  • 十、如今下載速度很慢,試從網絡協議的角度分析緣由,並優化(網絡的5層均可以涉及)。

     

HR問題彙總

 

    • 一、您在前一家公司的離職緣由是什麼?

    • 二、講一件你印象最深的一件事情;

    • 三、介紹一個你影響最深的項目;

    • 四、介紹你最熱愛最擅長的專業領域;

    • 五、公司實習最大的收穫是什麼;

    • 六、與上級意見不一致時,你將怎麼辦;

    • 七、本身的優勢和缺點是什麼?並舉例說明?

    • 八、你的學習方法是什麼樣的?實習過程當中如何學習?實習項目中遇到的最九、大困難是什麼以及如何解決的;

    • 十、說一件最能證實你能力的事情;

    • 十一、針對你你申請的這個職位,你認爲你還欠缺什麼;

    • 十二、若是經過此次面試咱們單位錄用了你,但工做一段時間卻發現你根本1三、不適合這個職位,你怎麼辦;

    • 1四、項目中遇到最大的困難是什麼?如何解決的;

    • 1五、你的職業規劃以及我的目標;將來發展路線及求職定位;

    • 1六、若是你在此次面試中沒有被錄用,你怎麼打算;

    • 1七、評價下本身,評價下本身的技術水平,我的代碼量如何;

    • 1八、經過哪些渠道瞭解的招聘信息,其餘同窗都投了哪些公司;

    • 1九、業餘都有哪些愛好;

    • 20、你作過的哪件事最令本身感到驕傲;

    • 2一、假如你晚上要去送一個出國的同窗去機場,可單位臨時有事非你辦不可,你怎麼辦;

    • 2二、就你申請的這個職位,你認爲你還欠缺什麼;

    • 2三、當前的offer情況;若是BATH都給了offer該如何選;

      2四、你對一份工做更看重哪些方面?平臺,技術,氛圍,城市,money;

    • 2五、理想薪資範圍;杭州崗和北京崗選哪一個;

      2六、理想中的工做環境是什麼;

    • 2七、談談你對跳槽的見解;

      2八、說說你對行業、技術發展趨勢的見解;

    • 2九、實習過程當中周圍同事/同窗有哪些值得學習的地方;

    • 30、家人對你的工做指望及本身的工做指望;

      3一、若是你的工做出現失誤,給本公司形成經濟損失,你認爲該怎麼辦;

    • 3二、若上司在公開會議上誤會你了,該如何解決;

    • 3二、是否能夠實習,能夠實習多久;

    • 3三、在五年的時間內,你的職業規劃;

    • 3四、你看中公司的什麼?或者公司的那些方面最吸引你。

相關文章
相關標籤/搜索