安卓程序員記歡聚時代的一次面試

昨天去歡聚時代面試了,總的來說回答的很不完美,基本上沒戲了,在這里記錄一下吧,想的起多少就寫多少。

28樓前臺簽到

本人已經(jīng)辭職了,但是公司不讓馬上走,要等30天,然后我在BOSS直聘APP上登錄了一下,更新了一下簡歷,本想著等離開了公司就開始投簡歷,沒想到當(dāng)天就收到一大堆的求簡歷。第二天也是一大堆,然后看到了歡聚時代,有點驚訝,我以為像歡聚時代這樣的大公司是不會主動這樣求簡歷的,但事實就是這樣,然后就把簡歷發(fā)過去了。這里不是打廣告,是真心的覺得BOSS直聘挺好的。

過了幾天,接到歡聚時代HR的電話預(yù)約面試,還是很驚喜的。昨天下午面試,雖然準(zhǔn)備的不是很充分,但是去看看也是好的,請個假大大好幾百,肉疼。

沒有提前到公司,是踩點的,不幸的真的找不到公司,萬達廣場太大了,問了半天終于找到B1棟在哪里了,然后等電梯,28樓,也是等了很久,足足遲到了20分鐘。所以以后面試不要踩點了,盡量早半個鐘到吧,撒個尿也是好的。

到了前臺,掃二維碼簽到,然后到旁邊的大廳填寫資料,是在手機上填的。大廳上很多人,應(yīng)該都是在面試的吧,瞬間覺得沒希望了,就是這么負能量哈哈,但是來之安之吧。填資料也是很坑,面試我一般不會填身份證的,但YY要求必填。。。然后我就填了18個X。然后是學(xué)習(xí)經(jīng)歷,隨便填了一下。然后是工作經(jīng)歷,也隨便填了一下,有一項是直接上司和手機號碼,必填。。。我們平時都是釘釘溝通了,實在不知道號碼。。。亂填了一番。最后是項目經(jīng)驗,這個這個。。。不可能現(xiàn)場寫的了,這輩子都不可能的,抄的話也不可能,太多了,也罷,不寫了,直接跳過。

這么多人我以為要等很久,結(jié)果就幾分鐘,一個胖紙叫我去面試了,明顯感覺到大家羨慕的目光哈哈,他們等了辣么久,我剛來啊哈哈。胖紙帶我轉(zhuǎn)了一圈,想找個房間,結(jié)果都有人了。這里得贊一下YY的這種接待室,應(yīng)該有十幾個吧,半透明的小房間,圓的方的什么造型都有,里面就一張桌子和幾張凳子沙發(fā)什么的。再等了幾分鐘,可以開房了。

沒有筆試。
居然沒有筆試。
沒有想到?jīng)]有筆試。

自我介紹,隨便說了一下,自己都覺得語無倫次,渣的一批,可是胖紙挺好,適度插嘴,我就喜歡他插嘴,因為我也不知道往下還有什么說的哈哈。然后胖紙看著我的簡歷,一邊問問題,一邊記筆記,還是很認真的,雖然我回答的很表面,他有時候也會深入一點問原理什么的,我大多都答不上來,但是胖紙很和藹,氣氛依然很好,我答不上來的我偶爾還會反問他,他也跟我說了。

輸出什么
String s = "hello";

public void test(String s) {
  s = "world";
}

test(s);
System.out.println(s);

胖紙手寫的代碼,我一看這個就說輸入hello了,然后胖紙說為什么,我一下子居然答不上來,如果傳入的是一個普通對象的話,那傳入的就是引用了,值是會變的,但是這個是String,這個東西我一直有點怕。最后胖紙跟我說這個String保存的是值,傳入方法中的是值,而不是引用,所以不會改變外面那個s的值。

multiDex的原理是什么

一臉懵逼,我只知道這是分包用的,只會用不知道原理。

簡歷上說封裝了某某View,你是怎么封裝的

怎么封裝的,不知道從哪里開始說起啊

你是怎么自定義View的

我也不知道怎么說啊,就叫胖紙舉個具體的例子。然后胖紙說如果自定義一個鬧鐘界面,我大概說了一下繼承View,在onMeasure中測量大小,在onDraw中繪畫鬧鐘。然后胖紙說就這么簡單?在onMeasure中是怎么測量大小的?

Android的事件傳遞機制什么什么樣的

這些問題我感覺我是說不清楚的,用筆畫圖還可以說清楚,當(dāng)時又沒帶筆,然后就大概說了一通,事件從根節(jié)點的dispatchTouchEvent分發(fā),開始傳遞,可以用onInterceptTouchEvent攔截,子View也可以反駁攔截,有個反駁的API,忘了叫什么了,如果沒有攔截,那就繼續(xù)傳遞給子View,在onTouchEvent可以監(jiān)聽,返回true消費掉事件。這個傳遞機制我自認為是比較了解的了,但是口頭描述不清楚。

Handler的機制

Handler負責(zé)發(fā)送消息,和處理消息,創(chuàng)建Handler的時候需要傳入一個Looper,Looper維護著一個消息隊列MessageQueue,Looper不斷循環(huán)從消息隊列里拿到消息交給Handler處理。如果需要在子線程維護一個消息隊列的話,需要在子線程調(diào)用Looper.prepare初始化,然后Looper.loop開始循環(huán)讀取消息。

然后胖紙問,如果new Handler的時候不傳入Looper,那么Looper是怎么來的,我說在哪個線程new的Handler,就拿哪個線程的Looper,如果是子線程的話需要先Looper.prepare初始化一下,胖紙也懵逼了,應(yīng)該他不是想問這個,然后我只好說沒看過源碼不清楚了。然后胖紙又問:主線程的Looper怎么拿的,我:Looper.getMainLooper,胖紙:子線程的Looper又是怎么拿的,我:Looper.myLooper,然后胖紙想了半天,有myLooper這個東西么,說到我也不確定有沒有了。。。

// Handler的部分源碼
public Handler() {
    this(null, false);
}

public Handler(Callback callback, boolean async) {
    // ...
    // 沒有傳入Looper的時候的確是調(diào)用了Looper.myLooper()獲取。
    // 而且當(dāng)前線程必須先調(diào)用Looper.prepare()
    mLooper = Looper.myLooper();
    if (mLooper == null) {
        throw new RuntimeException(
            "Can't create handler inside thread that has not called Looper.prepare()");
    }
    // ...
}
public final class ActivityThread extends ClientTransactionHandler {
    // app的啟動入口,這是進程孵化器已經(jīng)創(chuàng)建出app進程了
    // 這是第一個線程,直接作為主線程
    public static void main(String[] args) {
        ...
        // 初始化Looper
        Looper.prepareMainLooper();
        ...
    }
}

public static void prepareMainLooper() {
    prepare(false);
    synchronized (Looper.class) {
        if (sMainLooper != null) {
            throw new IllegalStateException("The main Looper has already been prepared.");
        }
        //  由下面的getMainLooper()方法可以知道,我們?nèi)サ木褪沁@個sMainLooper
        sMainLooper = myLooper();
    }
}

public static Looper getMainLooper() {
    synchronized (Looper.class) {
        return sMainLooper;
    }
}
Java內(nèi)存管理
Java垃圾回收機制
Activity的singleTop和singleTask的區(qū)別

這個我還是比較清楚的,還有singleInstance我也說了一遍。

Service的兩種啟動模式有什么區(qū)別

startService和bindService的區(qū)別我也是比較清楚的,也說了一遍,然后他深入的問。。。

Service的onStartCommand的幾種返回值有什么區(qū)別

一臉懵逼。我只是隱約記得有個什么STICKY,粘性的,還有什么忘了,有什么區(qū)別,也忘了。

沒有了,想不起來了

其它的想不起來了,就醬紫了。
差不多走的時候,胖紙突然說面試會有好幾輪,叫我慢慢等,不知道他是什么意思,我認為我應(yīng)該是直接PASS掉的了,那就沒有下面的輪了,也沒必要跟我說還有好幾輪了,我就隨便問了一下每輪相隔時間會不會是一個月,胖紙說要排隊看情況,走人。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評論 25 709
  • “水中人參”芡實是《黃帝內(nèi)經(jīng)》中記載的上品藥材之一,也是一味常用的藥食兩用藥材。因為它很像雞頭,所以又稱“雞頭米”...
    walker小凱閱讀 195評論 0 0
  • 我總是很急。 我吃飯很快,你才開始我已經(jīng)吃完了; 我走路很快,你總是跟不上我的腳步; 我說話很快,你經(jīng)常聽不清楚我...
    葉_XIN閱讀 213評論 0 1

友情鏈接更多精彩內(nèi)容