1. 程式人生 > >總結一下面試中遇到的問題,一共面試了4家公司。

總結一下面試中遇到的問題,一共面試了4家公司。

基本情況:本科畢業一年,面試職位:北京的Android開發職位。

        1.搜狗:

            (1)5種基本的Layout:relative,linear,frame,absolute,table.

              (2) wait和sleep的區別:wait釋放鎖,但是sleep不釋放。

            (3)單例模式的實現

            (4)演算法題:程式碼實現一個字串如abcd的全部排列。

             (5)兩種方法註冊broadcaseReceiver,及其區別。

             (6) 索引的優化

              (7)String常量池

              (8)用asynctask實現一個音樂播放器,需要實現播放,暫定,進度提示等功能。

             (9)Service是否在UI執行緒中,OnstartCommand是否有可能阻塞主執行緒

              (10)android訊息分發機制

          2.奇虎360

              (1)hashtable和hashset的區別,hash對映的實現原理。

               (2)https和http協議的區別

                 (3)靜態內部類和匿名內部類‘

                 (4)jdk1.5和1.6的新加特性

                  (5)4中luncmode的區別。

                  (6)對於handler和looper的理解

          3.百度

                (1)hashcode和equals相關,hashcode的原始碼實現。

             (2)dp,px和螢幕密度的關係

              (3)訊息傳遞的三個方法:onTouch,dispathcTouchEvent,interceptTouchEvent的理解,及原始碼

               (4)view中繪畫相關的原始碼:draw的實現,dispatchDraw等

              (5)View中animation的原始碼實現

              (6)wait和sleep哪個會消耗cpu資源

               (7)如何實現,在一個電子書展示頁面,按下音量大小控制鍵來實現翻頁

               (8)重寫控制元件實現一個歌詞滾動播放效果,說出關鍵程式碼實現

                 (9)httpclient的使用情況

                (10)handler和looper的實現原始碼

           4.騰訊:

                  (1)演算法題居多,筆試:

                            逆序一個有序連結串列;消除兩個雙向連結串列中相同元素;一個字串,如"abcd",向左平移N位;1億個數字,找出第N(N<10000)的數字,注意效率。

                            A,B兩個二叉樹,判斷是否有包含關係。

                             程式碼實現這個問題:檔案A中存取一堆人的ID和年齡,檔案B中存了一堆人的ID和名字,AB中都是根據ID升序排列的。請實現在檔案C中寫入A,B中排序和合並的情況。注意,A,B中所有的資料量很大,超過物理機記憶體容量。

                    (2)如何進行低版本機器適配。

                     (3)Adapter的優化

                      (4)java的反射機制

                       (5)java多型性:子類物件指向父類引用

                       (6)java垃圾回收的機制

                        (7)哪些手段進行圖片記憶體優化