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

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

如下爲讀者面試後的分享,部分回答筆者作了一些補充整理,但願對你有幫助。(兩年左右開發經驗,不具備共性,僅供參考!)linux

面試

PS:若是各位同窗在面試後,也會作一些整理總結,也歡迎聯繫我,整理分享在公衆號上,互幫互助,幫助找工做的同窗拿下心儀公司的Offer!數據庫

vim

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基礎方面不理想,知道使用可是對原理沒有去作了解。

嗯,還算中肯~~

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




相關文章
相關標籤/搜索