
本人研究生在讀,在2月26日找了師兄內推阿里釘釘團隊,28號接到了約1面的電話,幸好我提前準備了一個多月的樣子,刷面試題、刷LeetCode(面了之后才覺得自己刷少了),對于我這樣一個實習生來說題目還是有些偏難,不過在4月20號終于拿到意向書了,聽內推人說阿里實習面試沒有rank,可能單純就是流程比較慢,漫長的等待和面試還是值得的呀,
釘釘1面,3月1日(電話面試,1個小時)
-
本科、研究生學過什么跟計算機相關的課?
-
tcp、http協議相關;http1.1和2.0區別
-
堆排序的程序
-
Java單例有幾種方式
-
靜態方法同步和普通方法同步的區別
-
執行緒池7大引數、作業原理
-
點擊手機桌面應用圖示后發生了什么
-
View三大流程說了一下,流式布局FlowLayout怎么實作的
-
retrofit原理,看過okhttp原始碼,講了一下okhttp的作業原理(分發器、攔截器,講了細節)
-
聊了專案(講了好久),幾個方面如下:
(1)專案中用了kotlin協程,于是問了協程的相關理念,面試官可能覺得說的不太全,就給補充了一下, 然后說協程這樣的新技術國外有人用,國內用的很少(因為使用協程會改變老專案原有網路架構,對于新專案可以使用,想要取代老專案比較困難),
(2)如果用戶反應app有問題,該怎么解決?回答網路抓包,面試官說大型專案不可能通過抓包來找問題,后來經過暗示,正確做法應該是生成日志檔案并提交到服務器,
(3)聊了專案中登錄相關的業務怎么實作的(將服務器回應的token持久化并添加到請求頭),
- 提問環節,問了面試官kotlin在企業應用中是否有用到,面試官說由于Java和kotlin并不沖突,因此在專案中是共存的,
第二天下午接到了約2面的電話,就約在當天晚上
釘釘2面,3月2日(電話面試,1個小時)
-
聊了研究生、本科階段得過哪些獎,做過哪些專案或者參加過哪些比賽,具體問了本科參加過的一個水中機器人的比賽(stm32單片機做的),怎么識別水中的路線之類的一些細節;又問了簡歷中的一個醫療機器人的專案(遇到了哪些問題、只是實驗室做著玩還是準備用在現實生活中);又問了參加過的數學競賽,這個競賽考察了什么能力等等,
-
問設計模式,Android原始碼或者第三方開源框架應用設計模式舉例?(說了okhttp攔截器責任鏈模式)
自己的專案有沒有用設計模式?(retrofit單例,用的kotlin的object關鍵字實作) -
Android原始碼中你認為有哪些方面設計的很優秀的地方?(說了Android view體系)
-
聊kotlin,kotlin相比于Java有哪些優勢、具體有哪些特性、語法糖之類的
-
談談對mvvm、mvc架構的理解,為什么你要在專案中使用mvvm?(當然是Google推薦使用mvvm)
-
聊對作業、學習方面的態度,應該具備什么能力等等
-
三道演算法題(說思路):
(1)二叉樹的最近公共祖先(只想出來一種比較笨的方法)
(2)遍歷二叉樹的第k層節點(遞回迭代都講了)
(3)給一個中文字串“一萬兩千八百一十一”(只是個例子),輸出這個字串對應的數值(沒想出來) -
提問環節,問了部門的氛圍如何之類的
二面之后參加了阿里的第一次筆試,兩道力扣hard題,血難,加上我之前沒練過ACM輸入輸出,最后一道也沒過0分
(1)力扣1411:網格圖涂色的方案數
(2)力扣815:公交路線
筆試之后心態崩了,覺得0分應該進不了阿里了,沒想到過了兩周二面的面試官給打了個電話,說前兩面的面試成績挺好,可以再給一個機會,用阿里伯樂平臺出了4道題(其實是前兩道有點難,第一道貪心演算法,第二道工廠模式+策略模式+多執行緒都不會),才又出了后面兩道簡單的演算法題,一個反轉字串中的單詞,一個求鏈表倒數第k個節點,這倆寫出來了,一周之后接到了3面的電話,
釘釘3面,3月24日(電話面試,40分鐘)
-
自我介紹
-
聊專案,mvc、mvp和mvvm架構各自的特點;在專案中最具有挑戰的是什么?專案識訓到了什么?
-
演算法題:給兩個字符陣列,舉例:{h,e,l,l,o, ,w,o,r,l,d}和{e,o},如果第一個陣列中存在第二個陣列中的元素則去掉,后面的元素往前順移,結果為:{h,l,l, ,w, r,l,d},要求時間復雜度為O(n),空間復雜度為O(1),
-
你認為什么樣的人可以稱之為技術大佬?如果只有30分鐘,你會依據什么來判斷一個人是不是大佬?你認為自己身邊最厲害的技術大佬是誰?他為什么會成為大佬?你愿不愿意推薦他到我們頂頂團隊(我說他投了螞蟻,面試官說他做了錯誤的選擇…)?如果讓你在半年之內達到他的水平,你的學習規劃是什么?你會不會向他請教學習方法?
-
反問:
(1)大廠對新技術的態度是怎樣的?
(2)鴻蒙會不會取代Android?Android的前景怎樣?面試官先問了我的觀點,后來說了自己的觀點:不會,
為什么不會?這個要自己查找最近幾年出現的智能手機系統,它們為什么沒有Android和iOS成功,從中找答案,
釘釘HR面,3月30日(釘釘視頻面試,20分鐘)
-
自我介紹,開了共享螢屏現場給HR展示了之前的一個專案
-
你的專案UI界面是自己設計的嗎?
-
你對未來的規劃是什么?
-
有沒有投別的大廠?
-
大廠有很多,為什么要投阿里?為什么要投釘釘部門?
-
你對互聯網行業加班現狀怎么看?你對加班的態度怎樣?
提問環節:
(1)實習生待遇怎樣?
(2)轉正率高不高?(阿里實習期間如果表現正常基本都能轉正,除非自己不想轉正)
(3)加班情況怎樣?(除了大版本更新,平時不會像拼多多那么肝,一般晚上九點就清場了,周末基本也不用加班)
面試經驗總結
-
一定要謹慎對待寫在簡歷上的東西,一定要對簡歷上的東西非常熟悉,因為一般情況下,面試官都是會根據你 的簡歷來問的;
-
注重計算機基礎,對自己投遞崗位需要的技能足夠熟練,對其他崗位需要的知識也要有所了解,
-
注重演算法,很多人都沒有意識到演算法的重要性,國外的企業都在問演算法題,國內大廠演算法現在也是必不可少的,算是行業風口,掌握演算法的人將拿到更多的機會,
-
關注技術視野,技術視野是大家容易忽略的一個點,包括深度和廣度,包括阿里在內的很多大廠面試都很看重這個,有些人面試答得很好,卻給面試官留下一個視野狹窄的印象,
-
能有一個上得了臺面的專案也非常重要,這很可能是面試官會大量發問的地方,所以在面試 之前好好回顧一下自己所做的專案;
-
和面試官聊基礎知識比如設計模式的使用、多執行緒的使用等等,可以結合具體的專案場景或者是自己在平時是 如何使用的;
-
建議提前了解一下自己想要面試的公司的價值觀,判斷一下自己究竟是否適合這個公司,
我個人覺得面試也像是一場全新的征程,失敗和勝利都是平常之事,所以,勸各位不要因為面試失敗而灰心、 喪失斗志,也不要因為面試通過而沾沾自喜,等待你的將是更美好的未來,繼續加油!
另外,希望學弟學妹早有規劃,不妨正式作業前來阿里實習多看看,如果你覺得自己目前的硬實力又不到,我覺得還是有必要去努力一下的,技術能力的高低能決定你走多遠,平臺的高低,能決定你的高度,
面試官通常會問一些開放性的問題,對你的思維拓展能力、多方位的思考能力也是一種考驗
永遠不要打無準備之仗!早做準備,多做準備!
下面分享一下我之前刷過的面試題以及演算法資料,希望能幫助到有心在技術這條道路上一路走到黑的朋友!
Java部分
- 作業系統相關
- JDK&JVM&JRE
- 面向程序 & 面向物件
- 八大基本資料型別&參考型別
- 陣列
- Java例外
- 集合(容器)
- 執行緒
- 泛型
- 反射
- 注解
- Socket編程
- 設計模式
- JVM相關

Android部分
Activity
- 典型情況下的Activity生命周期?
- 例外情況下的Activity的生命周期 & 資料如何保存和恢復?
- 從Activity A跳轉到Activity B之后,然后再點擊back建之后,它們的生命周期呼叫流程是什么?
- 如何統計Activity的作業時間?
- Activity的啟動模式 & 使用場景
- 如何在任意位置關掉應用所有Activity & 如何在任意位置關掉指定的Activity?
- Activity的啟動流程(從原始碼角度決議)?
- Activity任務堆疊是什么?在專案中有用到它嗎?說給我聽聽

BroadcastReceiver
- 廣播是什么?
- 廣播的注冊方式有哪些?
- 廣播的分類 & 特性 & 使用場景?
ContentProvider
- 什么是內容提供者?
- 說說如何創建自己應用的內容提供者 & 使用場景
- 說說ContentProvider的原理
- ContentProvider,ContentResolver,ContentObserver之間的關系
- 說說ContentProvider的權限管理
Service
- 什么是Service?
- 說說Service的生命周期
- Service和Thread的區別?
- Android 5.0以上的隱式啟動問題及其解決方案,
- Service保活方案
- IntentService是什么 & 原理 & 使用場景 & 和Service的區別,
- 創建一個獨立行程的Service應該怎樣做?

Handler
- 子執行緒一定不能更新UI嗎?
- 給我說說Handler的原理
- Handler導致的記憶體泄露你是如何解決的?
- 如何使用Handler讓子執行緒和子執行緒通信?
- HandlerThread是什么 & 原理 & 使用場景?
- 一個執行緒能否創建多個Handler,Handler和Looper之間的對應關系?
- 為什么Android系統不建議子執行緒訪問UI?

AsyncTask
- AsyncTask是什么?能解決什么問題
- 給我談談AsyncTask的三個泛型引數作用 & 它的一些方法作用,
- 給我說說AsyncTask的原理
- 你覺得AsyncTask有不足之處嗎?
Fragment
- Android中v4包下Fragment和app包下Fragment的區別是什么?
- Fragment的生命周期 & 請結合Activity的生命周期再一起說說,
- 說說Fragment如何進行懶加載,
- ViewPager + Fragment結合使用會出現記憶體泄漏嗎 & 如何解決?
- Fragment如何和Activity進行通信 & Fragment之間如何進行通信?
- 給我談談Fragment3種切換的方式以及區別 & 使用場景,
檔案存盤
- 說說Android中資料持久化的方式 & 使用場景
- 接觸過MMKV嗎?說說SharedPreference和它的區別
- 第三方資料庫框架用過哪些?有沒有自己封裝過一個SQLite的庫
- SQLite是執行緒安全的嗎 & SharedPreference是執行緒安全的嗎?
- 請簡單的給我說說什么是三級快取?
- SharedPreference的apply和commit的區別
- 談談你對SQLite事務的認識

ListView & RecyclerView
- ListView是什么?如何使用?
- RecyclerView是什么?如何使用?如何回傳不一樣的Item,
- ListView和RecycyclerView的區別是什么?
- 分別講講你對ListView & RecyclerView的優化經驗,
- 給我說說RecyclerView的回收復用機制
- 說說你是如何給ListView & RecyclerView加上拉重繪 & 下拉加載更多機制
- 談談你是如何對ListView & RecycleView進行區域重繪的?

圖片編程
- 你對Bitmap了解嗎?它在記憶體中如何存在?
- 有關Bitmap導致OOM的原因知道嗎?如何優化?
- 給我談談圖片壓縮,
- LruCache & DiskLruCache原理,
- 說說你平常會使用的一些第三方圖片加載庫,最好給我談談它的原理,
- 如果讓你設計一個圖片加載庫,你會如何設計?
- 你知道Android中處理圖片的一些庫嗎(OpenCv & GPUImage …)?
WebView
- WebView會導致記憶體泄露嗎?原因是什么?解決方式有哪些?
- 你知道Hybrid開發嗎?說說你的相關經驗
- 說說WebSettings & WebViewClient & WebChromeClient這三個類的作用 & 用法,
- 說說你了解的Hybrid框架,
- 如何提高原生的WebView加載速度?
- 談談你對webView作業機制的認識,你在專案中優化過它嗎?說說是從哪些方面著手的?
ViewPager
- 什么是ViewPager?說說它的那些配接器,(校招&實習)
- 你了解ViewPager2嗎?和ViewPager 1有哪些區別?
- ViewPager + Fragment結合使用存在的記憶體泄漏的原因是什么?如何解決?
View事件分發機制
- 什么是事件分發機制?主要用來解決什么問題?(校招&實習)
- 給我說說事件分發的流程 & 你專案解決事件沖突的一些案例,
- 分別講講有關事件分發的三個方法的作用及關系,
- 如果我在一個設定了點擊事件的TextView中dispatchTouchEvent方法強制回傳ture或
者false會發生什么? - 談談你對MotionEvent的認識?Cancel事件是什么情況下觸發的?
- requestLayout(),onLayout(),onDraw(),drawChild()區別和聯系?
由于篇幅有限,只能分享部分面試題,更多面試題及答案去我的【GitHub】閱讀下載哦~無償分享給大家,算是一個感恩回饋吧
知識深度
也許上面這些面試題,你通過背一背,就能掌握得八九不離十了,畢竟面試官提的很多問題也是在網上找到的,所以你可能會放松警惕,覺得這樣就足夠了,
其實不然,大廠面試官還有一個愛好,就是對于每個知識點,都喜歡深入往下問,問到沒有問題可以問,或者問到你不會為止,這樣提問的目的只有一個,就是試探你對這個知識點的理解深度,如果你無法提供足夠深刻的回答,結果往往就是失敗,
最后希望大家能夠重視面試,不要浪費自己的機會!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/280945.html
標籤:其他
