首頁 > 軟體

熊大同學的面試回憶錄(2.5年開發經驗)

2021-05-29 08:30:26

今天去看牙醫,他問我年級輕輕牙齒怎麼磨損這麼嚴重?我說,沒有點讚的這些年,我都是咬著牙過來的。

以下為讀者面試後的分享,部分回答筆者做了一些補充整理,希望對你有幫助。(兩年左右開發經驗,不具有共性,僅供參考!)

PS:如果各位同學在面試後,也會做一些整理總結,也歡迎聯絡我,整理分享在公眾號上,互幫互助,幫助找工作的同學拿下心儀公司的Offer!

1.自我介紹

各有不同,略。(話說回來,如果是不善言辭的同學,應該面試前給自我介紹打個底稿記一下,開局印象也重要,自我介紹都結結巴巴的,面試要涼一半!)

2.之前項目中使用過哪些框架,評價一下自己掌握的程度?

答:Spring,SpringMVC,SpringBoot,Mybatis,SpringCloud那一套,基本都使用過。

掌握程度的話,基本上在搭建及使用上沒有問題,具備獨立開發的能力,但是因為之前公司開發任務比較緊張,暫時對底層原理這些沒有做太多的研究。

ps:如果你對Spring全家桶這套底層源碼、實現原理等有較深的研究,感覺能經受得住提問,就不要這樣自我評價了~

3.你們的微服務項目,服務註冊、發現使用什麼元件?

答:使用了Nacos。

接著問了為什麼沒有用Eureka,他們有什麼區別嗎?

答:Nacos可能更有先進性一些,自帶實現配置中心,Eureka的話,需要整合SpringCloud Config,同時Nacos支援根據不同的業務、環境進行分組管理,所以在選型上有限考慮了Nacos。

PS:附Eureka和Nacos的功能對比圖

圖片

4.那你知道Nacos的實現原理嗎?

沒答出來。

回答了:平時業務開發比較多,比較熟悉使用,對底層原理沒有做深入的瞭解。

ps:Nacos原理分析,可以看這裡:

【282期】面試官:你能說說 Nacos 的實現原理嗎?

5.你覺得SpringBoot和Spring的區別是什麼?

答:SpringBoot開發中簡化了很多XML的配置,引入自動配置的概念,做到零配置開箱即用。

還有就是內建了容器,不需要配置Tomcat,可以直接打包Jar運行。

接著問了SpringBoot的啟動原理

答:通過@SpringBootApplication註解啟動初始化模組,載入基本的環境變數、資源、構造器等,配置資訊等;根據檔案中配置的 Jar 包去掃描並載入項目所依賴的 Jar 包;@SpringBootApplication註解包含@ComponentScan註解,可以進行元件掃描,把掃描到的Bean注入到注入 Spring Context 中,完成SpringBoot的啟動!

PS:這個問題回答的很虛,面試之前其實看過SpringBoot啟動原理的文章,但是沒有自己去提煉一下如何回答(沒想到就問了,心裡那個悔啊),不過面試官沒有說什麼,回答完後直接問了另一個問題。

6.Spring中用了哪些設計模式?

答:工廠模式、代理模式、單例模式。

我是個菜雞,平時設計模式其實研究不多,偏重業務開發。答完後面試官追問還有呢?我回答暫時想不到了!!!

接著問,具體說說哪裡用到了?

工廠模式在BeanFactory以及ApplicationContext創建中都有用到;代理模式在Aop實現中用到了JDK的動態代理;單例模式在創建bean的時候,預設單例;面試後的總結:設計模式上肯定失分了,其實也看過這類文章,還有收藏,只是沒有深入去閱讀,總結,導致面試回答時候,能想起一點,但是總是回答不全或者回答不到點子上,以後學習的習慣要改,不能草草看過就算,要麼不看,看過就記錄總結~~

7.熟悉Linux作業系統嗎?

答:熟悉,項目部署一直使用linux,基本的項目部署之類沒有問題。

接著問說說常用的Linux命令

vim 開啟檔案修改內容find 搜尋檔案mkdir 創建目錄rm 刪除目錄或檔案kill 殺掉程序cp 拷貝等等,說了不到十個左右被打斷,問了:

檢視與某臺機子的連線情況:ping ip重啟網路:service network restart讓自己說了一通常用的命令之後,只問了這兩個。

8.Redis熟悉嗎?用得多嗎?

答:項目中一直在用,還算熟悉。

說說Redis的常用命令吧

info:提供伺服器的資訊和統計;shundown:將資料同步儲存到磁碟,然後關閉服務;get(key):返回資料庫中名稱為key的string的value;setnx(key, value):新增string,名稱為key,值為value;lindex(key, index):返回名稱為key的list中index位置的元素;簡單說了幾個,接著問了 什麼是快取穿透、快取雪崩、快取擊穿?

快取穿透、快取雪崩、快取擊穿的解決方法?

我感覺這個回答的還行,答案不羅列了,參考:

PS:主要是看過,也理解了這部分,其實這個在之前項目中還真沒實際處理過~~~

9.Excel資料的匯入匯出處理過嗎

答:處理過,使用了POI做Excel的匯入匯出。

接著問匯出資料量很大,會有什麼問題

答:會導致記憶體溢位。

你們怎麼處理的?

(這個基本沒答上來,依稀記得看過公眾號相關文章,但是忘記的死死的,好想說我去找個文章,拷貝一下人家處理的程式碼,這樣子解決。)

答:之前項目中,匯出沒有遇到資料量特別多的場景,沒有這方面的處理經驗。

10.有沒有對項目做過優化,說說SQL方面你們一般會做哪些優化處理

答:

使用連線(JOIN)來代替子查詢;對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引;用EXISTS替代IN、用NOT EXISTS替代NOT IN;避免在索引列上使用計算;應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描;儘量避免3條以上的Join查詢;接著問,很多次說到索引,是不是新增的索引越多越好?

答:不是。

表記錄太少經常插入、刪除、修改的表補充:

資料重複且分佈平均的表字段,假如一個表有10萬行記錄,有一個欄位A只有T和F兩種值,且每個值的分佈概率大約為50%,那麼對這種表A欄位建索引一般不會提高資料庫的查詢速度。經常和主欄位一塊查詢但主欄位索引值比較多的表字段其他

問了一些簡歷上的項目問題,不具備共性,這裡不分享了。

問了能手寫紅黑樹嗎?

答:資料結構那些不太熟,只會基本的排序那些,面試官一笑~

問了在之前項目中有沒有踩過什麼坑,怎麼解決的?

最怕這類提問,想了一下說了事務註解失效的坑,導致生產資料出現問題,熬夜回退並作了資料矯正。

問了上家公司離職原因

回答不具有共性(本人是一線城市回二線),略。

問有什麼想問的嗎?

問了對我面試表現的評價。評價大意是項目實戰經驗不錯,使用的技術方面都比較契合,項目上沒有問題;然後Java基礎方面不理想,知道使用但是對原理沒有去做了解。

嗯,還算中肯~~

基本面試下來,回想起來的就這些問題了。但是提問順序有出入,記性不好,只能回憶期這些了,希望對你有所幫助!

推薦好文強大,10k+點讚的 SpringBoot 後臺管理系統竟然出了詳細教程!分享一套基於SpringBoot和Vue的企業級中後臺開源項目,程式碼很規範!能掙錢的,開源 SpringBoot 商城系統,功能超全,超漂亮


IT145.com E-mail:sddin#qq.com