本文是一位粉絲朋友前段時間的真實面經經歷,面的是蘑菇街
背景介紹:
作業經驗:Java開發5年
學歷背景:重慶郵電大學(資訊安全專業)
作業經歷:主要業務在柬埔寨做移動支付錢包(聚合支付的專案,讓柬埔寨當地華人能使用微信、支付寶支付)
注意:以下內容均為真實面經分享,大家可以認真閱讀完,看下這些面試題你是否能答的讓面試官滿意,同時我也會分享一些面試的小技巧給大家,主要告訴你如何準備簡歷,如何準備面試,2020大廠面試真題分享(含答案),哪些學習資料值得看,
話不多說,下面一起跟著這位粉絲朋友面試經歷來看看他的面試之旅吧,另外,下文中涉及到的面試題答案、復習資料,均有完整PDF版分享

面試官:自我介紹一下吧
程式員:你好,我畢業于XXX,作業5年了,最近的作業主要是負責XXX(見以上背景介紹)
面試官:看到你寫到熟練掌握Java語言的高級特性,簡單介紹一下Bean SpringBean一個注入程序吧
程式員:Bean的注入程序......首先是從組態檔(注解)里面把它和物件.....額,我對這方面還是不太熟悉
面試官:沒事沒事....我們接著往下聊
程式員:尷尬一笑
面試官:我看大你寫到你了解一些高級特性,你能給我簡單的介紹一下Java8有哪些新特性嗎,或者你比較擅長的新特性有哪些?
程式員:Java8主要就是在語法上就是lambda運算式,它可以用函式式進行那個函式式編程,函式式介面的意思就是它這個介面它只有一個方法.....
面試官:還有別的嗎?
程式員:還有一些流的操作,比如:Stream API它可以簡化編程語意,顯得更清晰,比如在做一個filter功能,就可以系結資料把不符合要求的資料過濾掉,就在以前的話寫一個for回圈,看起來就沒那么好理解....然后對于資料結構進行了一些優化,像ConcurrentHashMap,它底層實作改成了紅黑樹.....
面試官:你剛剛說的都是一些優化,我問的是它新加的一些高級特性
程式員:再次尷尬一笑.....

面試官:你剛剛提到它的流式處理,那對比像foreach或者基本的for回圈,它有沒有在效率上進行優化,還是說它更慢了?你有去了解過嗎?
程式員:額...沒有
面試官:我看你說對并發編程有些了解,你能跟我講一下Synchronized和Lock鎖它的底層實作原理嗎?
程式員:啊....Synchronized是一個語意級的支持,它在一個物件頭里面,它有一個Mark Word的標記去記錄它的鎖,Lock顯示鎖是利用了它底層是一個AQS,它式一個雙向鏈表的先進先出的一個佇列,它只有當前持有鎖的執行緒就是一個對頭,然后它釋放出來之后,就會利用一個自旋的操作,讓下一個執行緒作為隊頭這樣子
面試官:那它們兩個分別是什么層面的呢,是jdk層面還是JVM層面,還是?
程式員:Synchronized是JVM層面的,Lock是jdk層面的
面試官:剛剛你說到了Synchronized,你有去了解過它鎖方法、鎖物件和鎖代碼塊分別是怎么去實作的嗎?
程式員:額.....這個沒有
面試官:那你了解Synchronized鎖升級程序嗎?
程式員:沒有....
面試官:那剛剛提到了Lock,CAS你能給我簡單的介紹一下嗎?
程式員:CAS就是比較并交換
面試官:恩恩,提到這點就可以了,那你有在實際開發程序中有實際的一些應用嗎?應用到樂觀鎖的一個程序
程式員:有的,就譬如,我在更新資料庫的時候,如果一個資料庫用的是樂觀鎖的話,我也用一個自旋的操作,就把他更新到成功為止
面試官:自旋的效率會不會很低?如果一直取不到這個鎖的話,那可能會造成一些執行緒堵塞,或者在高并發場景下其他的會影響到很多效率,有考慮到這個問題嗎?
程式員:也考慮到了.....如果并發高的時候確實不太適用用自旋,這個時候更適合用悲觀鎖
面試官:那跟我聊一下執行緒池吧
程式員:執行緒池是.....我還是先說一下它的作業流程,再變成先提交進來,它先進入核心吃里面,如果執行緒書大于coreSize,就會進入一個阻塞佇列,阻塞佇列滿了后就會新建一些執行緒,進入最大的池里面;當執行緒數,連maxSize的超出了之后,它就會執行一個拒絕策略,JDK自帶的拒絕策略有四種:一種是直接丟棄;一種是拋例外;一種是由呼叫者的執行緒執行;一種是丟棄阻塞佇列里面等待時間最長的一個執行緒
面試官:我看你簡歷上還提到了熟練掌握JVM調優的知識,我能問一下你了解它調優的一些基本步驟嗎?
程式員:啊....一口老血,調優的基本步驟....就譬如,我從...恩..我從OOM說起吧....如果生產上發生一個OOM例外,首先是要判斷它是在堆里面發生的還是元空間里面,還有......它還有一種型別就是GC效率過低.....吧啦吧啦

注意:由于內容過多,避免影響到閱讀體驗,下面的面試環節我就不碼字了,全以截圖代替了!




面試官:我看你基本上都是待了一年就離職了,你能說一下你離職的原因嗎?
程式員:.........
面試官:你對自己職業規劃大概是什么樣的?
程式員:往互聯網金融行業走
面試官:你有什么想問我的?
程式員:問了一些之前沒太懂的
面試總結:從這場面試官中可以看出,面試官沒有深問,不然估計80%的內容都答不上來,基本上都是偏基礎的東西,底層的內容沒有怎么問,寫了個Dubbo在簡歷上,面試官都沒有問他Spring Cloud,Hystrix容器這些,連bus都可以問出一堆東西,一旦問了真的就只有尷尬了,問到懷疑人生,
最后
無論是哪家公司,都很重視基礎,大廠更加重視技術的深度和廣度,面試是一個雙向選擇的程序,不要抱著畏懼的心態去面試,不利于自己的發揮,同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛煉,
針對以上面試技術點,我在這里也做一些資料分享,有需要的朋友可以
本人免費整理了Java高級資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并發分布式等教程,一共30G,需要自己領取,
傳送門:https://shimo.im/docs/rQRKDPx6dPXqvYPq
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165334.html
標籤:Java
上一篇:Spring Boot系列 – 2. Spring Boot提供的特性
下一篇:3、Spring Boot日志
