日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

萌新面试经,赶紧来看看!

發(fā)布時(shí)間:2023/12/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 萌新面试经,赶紧来看看! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方 "后端架構(gòu)師"關(guān)注,?星標(biāo)或置頂一起成長

后臺回復(fù)“大禮包”有驚喜禮包!

關(guān)注訂閱號「后端架構(gòu)師」,收看更多精彩內(nèi)容

每日英文

As we grow up, we realize it becomes less important to have a tons of friends, and more important to have real ones。

長大了之后,我們發(fā)現(xiàn),擁有幾個(gè)真心朋友比找一大堆朋友要更重要。

每日掏心

每年四月流疏樹就開出白色小花,佈滿整棵樹,看起來就像下了一場大雪,讓人看著發(fā)呆,也讓人產(chǎn)生錯(cuò)亂,就像人生中充滿著各種錯(cuò)覺,身在其中很容易就被迷惑了。

來自:Omooo?|?責(zé)編:樂樂

鏈接:juejin.im/user/2647279728079432

后端架構(gòu)師(ID:study_tech)第 1062 次推文

往日回顧:給IDEA換個(gè)酷炫的主題,這個(gè)有點(diǎn)哇塞啊!

??? ?

? ?正文? ?

/???前言? ?/

19年雙非本科畢業(yè),洋洋灑灑的寫了一年多業(yè)務(wù),九月份開始面試,將一些面試題分享給大家,希望對大家有所幫助?;旧蠁柕亩疾畈欢?#xff0c;我就不按公司分類了,面了得物、閱文、B站、京東、攜程、百度、觸寶、騰訊、拼多多,最后掛了兩個(gè)(某訊是真的氣,基本上不按簡歷問)。

關(guān)于我的簡歷以及這些題的具體該怎么回答,我都放在GitHub了。

GitHub地址:

https://github.com/Omooo/Android-Notes

寫的不是博客,而是口水話。何為口水話呢?就是面試官問你相關(guān)問題的時(shí)候,你應(yīng)該如何說的話。有沒有遇到這樣的場景,明明面試官問我的問題我會,我也看過甚至我自己也寫過相關(guān)博客,但是在回答的時(shí)候還是支支吾吾說不清楚,或者不分輕重想到啥就說啥。口水話專門用來解決這個(gè)問題,它不同于一般博客語言瑣碎,而是語言精煉,突出重點(diǎn),以溝通的方式而非說教的形式去闡述問題。

/???正文? ?/

下面是一些我印象中的面試題。

Java

反射、注解、泛型、異常了解嗎?

基本上都會被問到,回答的時(shí)候只是回答基本使用是不夠的,可以說一下它們在 JVM 里面的實(shí)現(xiàn)原理。比如反射的性能損耗在哪,怎么優(yōu)化?注解的信息存放在哪?注解的兩種處理方式(反射和APT)。泛型擦除怎么理解?泛型的PECS原則如何理解(典型的一個(gè)例子就是Collections.copy方法)?異常的兩種方式(Exception和Error)分別簡單說一下?異常實(shí)例的構(gòu)造?異常表?final 為啥總是會執(zhí)行?

Java集合源碼

問的最多的莫過于HashMap了。HashMap的擴(kuò)容機(jī)制、hash沖突的解決、負(fù)載因子為什么是0.75,為什么鏈表長度的邊界值是 8,取索引的過程?非線程安全,所以就牽扯到了 ConcurrentHashmap、然后又牽扯到 CAS 等等。

在公眾號后端架構(gòu)師后臺回復(fù)“Java”,獲取Java面試題和答案。

最后也可以說一下Android中推薦的使用的SparseArray、ArrayMap(里面存在兩個(gè)緩存隊(duì)列)的優(yōu)化,源碼也要看一下。

ArrayList比較簡單,有一家讓我直接手寫實(shí)現(xiàn),可以練習(xí)一下。然后又可以牽扯到線程安全的Vector、CopyOnWriteArrayList。

JVM

問的最多的就是內(nèi)存區(qū)域的劃分以及GC。回答的時(shí)候需要注意,標(biāo)記清除是清除未被標(biāo)記的對象;還有GCRoots對象是哪些?CMS就別說了,已經(jīng)被廢棄了,可以說一下G1、ZGC這些。然后就是引用計(jì)數(shù)法和可達(dá)性分析,這個(gè)可以擴(kuò)展說一下Android Framework層使用到的智能指針,它就是使用的引用計(jì)數(shù),然后說一下它是怎么解決循環(huán)引用問題的。

類加載機(jī)制問的也不少,除了Java中的,還可以說一下Android中的DexClassLoader,Android 8的改動?然后就可以引申到了插件化和熱修復(fù)了。

還有一些問到虛擬機(jī)的。這時(shí)候先從Java的HotSpot(解釋執(zhí)行和編譯執(zhí)行,分層編譯)說起,然后到Dalvik,最后到ART。期間涉及JIT、AOT編譯,什么區(qū)別?profile性能分析?對垃圾回收的改進(jìn),如果優(yōu)化GC停頓(可以參考G1回收流程)?

并發(fā)

問的最多的也就是synchronized和volatile的實(shí)現(xiàn)原理了。synchronized的基本使用?1.6 的改進(jìn)(無鎖、偏向鎖、輕量級鎖、重量級鎖)?Java對象頭?實(shí)現(xiàn)原理(ACC_SYNCHRONIZED、monitorenter/monitorexit 指令)?volatile 的可見性(lock 前綴+緩存一致性協(xié)議)和有序性(內(nèi)存屏障)的實(shí)現(xiàn)原理?CAS的實(shí)現(xiàn)(ABA問題、循環(huán)時(shí)間長開銷大問題、只能保證單個(gè)共享變量的原子性)?UnSafe類的理解?

線程池,問的也很多,但是基本上都是問線程池的那幾個(gè)參數(shù)的意思。

Android

基礎(chǔ)

基本上都大差不差,Activity和Fragment的數(shù)據(jù)傳遞,生命周期、啟動模式;動畫的使用,估值器、插值器(其實(shí)就是三角函數(shù))都比較簡單。

View的繪制流程(從Activity的attach到onResume),然后延伸到如何自定義View,為什么要重寫onMeasure、MeasureSpec的理解?

View事件分發(fā),需要注意onCancel的觸發(fā)時(shí)機(jī)(典型的就是RecyclerView的點(diǎn)擊滑動)?除了一般博客上面寫的Activity -> ViewGroup -> View 的流程。還可以說一下事件從哪里來的(InputManagerService)?事件最先是分發(fā)給Activity的嗎(其實(shí)是ViewRootImpl里面的mView,也就是DecorView)?IMS是如何分別處理KeyEvent和TouchEvent的?

再講View的繪制流程,在scheduleTraversal時(shí)可以延伸到View的刷新機(jī)制。Vsync信號的處理?四種回調(diào)前三種都比較好理解,Commit回調(diào)是怎么觸發(fā)的(onTrimMemory)?Vsync計(jì)算掉幀,如何監(jiān)聽線上的卡頓情況,一種就是利用Vsync,還一種就是BlockCanary的利用Handler回調(diào)。

然后就是Handler機(jī)制,這個(gè)基本上大家都懂,不過可以說一下內(nèi)存屏障、為什么沒有卡死、IdleHandler在實(shí)際項(xiàng)目中怎么用到的?

Framework

其實(shí)前面我們在回答Android基礎(chǔ)時(shí)就已經(jīng)講到不少Framework的東西了。所以這一塊直接問的比較多的就是Activity啟動流程和Binder機(jī)制。在講Activity流程的時(shí)候,可以說一下插件化hook式的hook點(diǎn),以及Android 8、10啟動Activity的流程改動。

Binder機(jī)制,先說一下Linux下的IPC通信方式(管道、Socket、信號量、共享內(nèi)存,其實(shí)這些在Framework層都有使用到,可以簡單講一下)。然后就是著重講Binder的通信模型,Binder在驅(qū)動層是如何表示的(binder_node、binder_ref 數(shù)據(jù)結(jié)構(gòu))?ServiceManager的代理對象的獲取(getStrongProxyForHandle(0))、Service的注冊?打開Binder機(jī)制的三大流程?

插件化和熱修復(fù),插件化的靜態(tài)代理式(這個(gè)很好寫,就是剛哥的dynamic-load-apk)和Hook式;熱修復(fù)我也只了解騰訊系的類加載機(jī)制的dex插樁,如果熟悉阿里系的底層替換方案也可以說一下。

性能優(yōu)化

這個(gè)就可以根據(jù)實(shí)際在項(xiàng)目中做了哪些來說了。我是寫了包體積優(yōu)化(減少 8M+)、布局優(yōu)化(過度繪制和布局嵌套)、內(nèi)存優(yōu)化(LeakCanary + Android Profile)。

在公眾號后端架構(gòu)師后臺回復(fù)“offer”,獲取算法面試題和答案。

Gradle

因?yàn)槲液啔v上的個(gè)人技能和項(xiàng)目經(jīng)歷都寫了Gradle,所以這一塊問的也比較多。主要是問了編譯打包流程(AAPT和AAPT2的區(qū)別)以及一些項(xiàng)目中做了哪些事(構(gòu)建優(yōu)化、寫了一個(gè)Gradle插件)。

計(jì)算機(jī)網(wǎng)絡(luò)

TCP

必問,一定要回答全哦。TCP的面向連接(三次握手、四次揮手)、基于字節(jié)流、全雙工、可靠性(流量控制、擁塞控制、重傳機(jī)制等)。TCP的缺陷(隊(duì)頭阻塞),以及HTTP3的怎么解決的?TIME_WAIT狀態(tài)的理解?

HTTP/1.x、HTTPS、HTTP2、HTTP3

必問,這個(gè)只要成體系了,就很好回答了。

先從目前使用最廣泛的HTTP/1.1(二十多年前的版本)開始回答,長連接、如果傳輸大數(shù)據(jù)、現(xiàn)在有什么優(yōu)化措施(每個(gè)域名六個(gè)并發(fā)連接、域名分片、精靈圖等等),HTTP 1.x的問題(應(yīng)用層的隊(duì)頭阻塞、未壓縮Header、明文傳輸),HTTP2是如何解決的(多路復(fù)用、HPACK算法、二進(jìn)制數(shù)據(jù))?HTTP的不安全性(機(jī)密性、問完整性、身份校驗(yàn))由HTTPS保證(TLS_ECDHE_RSA_AES_128_GCM_SHA_256 + PKI)?

HTTP2(基于SPDY協(xié)議)只解決了應(yīng)用層的隊(duì)頭阻塞問題,但是并沒有解決傳輸層的隊(duì)頭阻塞,所以可以說一下HTTP3是如何解決的(基于QUIC協(xié)議,使用UDP)?連接遷移、前向冗余糾錯(cuò)?

算法

某度:判斷合法的IP地址。

某多:樹的最大深度(遞歸和迭代都要寫),加面算法判斷是否是同花順:

花色:R :?紅色,B:?黑色,M:?梅花,F:?方塊;牌大小:A、2、3、4?... K; 輸入:["RA",?"R2",?"R3",?"R4",?"R5",?"B4",?"M2",?"F1"]? 返回?true,可以構(gòu)成一個(gè)同花順。 輸入:["FJ",?"FQ",?"FK",?"FA",?"F2"] 返回?false。

某訊:島嶼問題

某寶:對稱二叉樹(遞歸和迭代都要寫)

PS:歡迎在留言區(qū)留????下你的觀點(diǎn),一起討論提高。如果今天的文章讓你有新的啟發(fā),歡迎轉(zhuǎn)發(fā)分享給更多人。

歡迎加入后端架構(gòu)師交流群,在后臺回復(fù)“007”即可。

猜你還想看

阿里、騰訊、百度、華為、京東最新面試題匯集

微軟將從12月開始暫停Windows 10更新!

如何設(shè)計(jì)一個(gè)通用的權(quán)限管理系統(tǒng)

技術(shù)無罪!開發(fā)者強(qiáng)烈抗議后,這款被封殺的下載神器恢復(fù)了

嘿,你在看嗎

總結(jié)

以上是生活随笔為你收集整理的萌新面试经,赶紧来看看!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。