四虎影视库国产精品一区-四虎影视库-四虎影视久久久免费-四虎影视久久久-四虎影视久久-四虎影视精品永久免费网站

TEL:15195455103

Java培訓 > Java知識 >

Java面試秘訣

作者:南京????來源:南京????發布時間:2020-02-05 12:08????瀏覽量:123

  Java程序員準備和投遞簡歷的實戰技巧

  1.1 簡歷中應包含的要素,一個都別落下

  為了讓簡歷更吸引技術面試官或其它相關篩選簡歷的人,大家在準備簡歷應當注意“直接”兩字:能讓篩選人能直接地看出本人的教育背景、工作經歷和項目經理,并讓他們“直接”感到這份簡歷能納入考慮范圍。

  根據這個原則,大家可以按次序在簡歷中列出如下表所給出的要素。

中博教育軟件學校

  1.2 該如何描述公司的工作情況

  這部分一般是按時間倒敘描述,比如可以按如下的格式寫:

  2015年11月到2017年10月,在xx公司,職務是Java高級開發。離職理由是想進一步發展。

  2012年2月到2015年11月,在xx公司,職務是Java初級開發。離職理由是想進一步發展。

  按此格式寫之前的公司情況

  這部分的內容應當盡量靠前,在羅列公司情況時,請大家注意如下的四個要點。

  第一,工作情況可以和項目經驗分開寫,一般會在后繼的項目經驗里寫具體用到的技術框架以及所做過項目的細節,在這里的工作情況描述里,可以不用過于復雜,讓招聘方看到你之前的公司情況即可。

  第二,盡量別出現長時間的“空白期”,比如上份工作是2月份結束的,而下份工作是6月開始的。如果出現持續三個月以上的“不在職狀態”,需要在簡歷中說明情況,比如這段時間你是換城市發展了,或辭職復習考研或復習考公務員,總之得找個能說得過去的理由。

  第三,在簡歷上,盡量別讓人感覺你每份工作都做不長,但不能以此作假。比如我見過有候選人會合并公司,比如2016年11月到2017年3月在A公司,2017年4月到10月在B公司,他為了不讓招聘方感覺他換工作太頻繁,在簡歷上就寫2016年11月到2017年10月在B公司工作,而故意合并了A公司的經歷。這樣的話,如果遇到背景調查,會露餡,即使有些公司不做調查,在勞動手冊等材料上也能反應出真實的工作情況,所以這種做法有一定的風險性。

  這里推薦的做法是,不要合并公司,但可以寫明理由,比如當時小王是被外派公司A以人力派遣的形式外派到B公司,但沒過多久A公司因某種原因不再具備人力派遣的資質了,這時小王就不得不終止與A公司的合同轉而和B公司簽約,這樣雖然看上去小王是換了公司,但實際上沒有。通過類似的合理解釋,招聘方就不再會質疑小王的工作能力和穩定性了。

  第四,可以寫上合適的離職理由,尤其當你短時間里換工作比較多,可能引起招聘方的質疑的情況里,更該考慮些合適的理由。

  合理的離職理由可以是,想為自己提供一個更大的發展空間,或想通過升級來獨當一面,以此進一步提升自己的能力,或公司因資金等方面的原因倒閉了。總之,這不是我主觀上不穩定,而是由于客觀原因導致我不得不換工作。

  而可能會導致沒面試機會的離職原因是,待遇問題(雖然大家心知肚明,但不能這樣寫),或無法承受大壓力,或同事領導排擠。這類理由往往會暴露出候選人的缺點,所以不建議大家采用。從這意義上來講,“合同期滿”也不是一個好的離職原因,因為如果候選人能力強,那么為什么原公司不和你續約呢?

  總之,在描述公司情況時,一旦出現會讓招聘方感覺你能力不強或不穩定時,一定得醒目地寫上足以信服的理由,這樣你的簡歷才會有機會被繼續被讀下去,進而你才會有技術面試的機會。

  1.3 盡量把學習培訓項目和畢業設計項目往商業項目上靠

  商業項目是指能掙錢的項目,和它對應的就是些不以掙錢為目的的學習項目或畢業設計項目。正因為客戶付了錢,所以商業項目的要求要遠遠高于學習或畢業設計項目,這也是為什么招聘公司會看重商業項目而會主動過濾學習項目的原因。

  比如小張在大三時幫計算機系的王老師所在的ABC軟件公司干了半年的活,如果小張在簡歷上寫:“在校期間,從x年x月到x年x月完成了xx系統,用到了xx技術”,那么這多半會被當成類似于課程設計的學習經驗,但如果再加上如下關鍵性的描述:“這個系統是屬于xx公司的xx商業項目里的一部分,我和另外三位開發人員做了半年,終這個系統成功上線并在客戶xx公司的環境里投入運營”,那這樣小張的商業項目總年限里就能加上這半年時間了。

  又如小李在做畢業設計時,花了7個月的時間參與了導師的一個電商商業項目,他主要的工作是設計一個調度算法,但也參與了一些諸如訂單管理模塊的工作。如果他就平淡地寫一句,畢業設計是xx,畢業論文是xx,那么招聘方看過就算了,也不會認為小李在做畢業設計時還有過商業項目經驗,這樣小李未免有些吃虧。

  但如果這樣寫:“在x年x月到x年x月的7個月里,在畢業設計中,我參與了xx公司的xx電商項目,客戶方是x,我參與了訂單管理和xx模塊,并設計了其中的調度算法,在我的畢業論文里,詳細介紹了這種做法”。文字沒修改太多,但足以讓小李增加7個月的商業項目經驗。

  我們發現大多數初級程序員的水平其實也差不多,這時就得看誰的商業項目經驗豐富了。比如有次我們無法從兩位候選人中權衡,因為他們的綜合條件和面試情況都差不多,但其中有一位在大三階段有段為期6個月的商業項目實習經驗,另一位沒有(也有可能他也有但沒當成商業項目來寫),這種情況下我們就錄用了有實習經驗的候選人了。

  1.4 描述項目的技巧

  我們可以根據職位需求,從如下幾個方面來描述項目經驗。

  第一,簡要描述項目的背景,比如時間范圍,客戶是誰,項目規模有多大。如下是范例。

  從x年x月到現在(這個時間范圍至少是近半年),我參與某外匯交易系統,客戶是xx銀行,這個項目組的構成是,1位項目經理外加10位開發,總共的規模大概在80個人月左右。

  第二,大致描述項目的需求和包含哪些模塊,然后簡要說下你做了哪些模塊,同時說下在這個項目用到的開發工具和主要技術點,這部分的描述如下所述。

  這個外匯交易系統包括掛盤撮合成交、實盤成交、反洗錢和數據批處理等模塊,我主要負責了掛盤撮合成交模塊,其中用到了Spring MVC架構,數據庫是Oracle,用Mybatis實現的ORM,該系統是運行發布在Weblogic服務器上,我們還用了Nginx來實現負載均衡,用Redis來緩存數據。在這個項目里,我還用到了JS實現了一些前臺頁面。

  第三,這里可以結合職位的需求,描述JD里要求的技術在項目里是如何用的。同樣這里也應圍繞技術,而別多寫業務細節

  1.5 在簡歷中描述項目時可以添加的亮點

  我們見過不少簡歷,在描述項目時,也能像上文一樣,能根據招聘職位的具體要求展示出自己的匹配點,這種簡歷屬于“達標”,即可以納入考慮范圍。在這個基礎上,如果大家在項目里有下表列出的亮點,一定請寫上,這就是大家優于別人的地方。

  1. 數據庫和JVM調優;

  2. 你理解的框架底層代碼;

  3. 項目里用到的設計模式;

  4. 項目管理和部署工具;

  5. 結合若干案例,講述你分析和解決bug的技能;

  6. 其它能幫助到你的加分項,比如工期緊,用到新技術等。

  1.6 哪些簡歷可以通過篩選

  從面試官角度來看,除了學歷等硬件條件外,如果簡歷滿足如下的4點要求,就一般能有面試機會了。

  1. 商業項目足量,且其中包含的技能和職位介紹很匹配;

  2. 近用到的技能和職位介紹很匹配;

  3. 沒有過長職業空白期或不穩定等情況;

  4. 一定請記住,公司只能通過簡歷認識到你,簡歷上沒寫清楚等同于你不行。

  其實這就是我們寫簡歷的方向,而且,在針對具體公司投遞簡歷時,還可以以此為目標,微調簡歷。

  面試時該如何講解技術項目贏得面試官好感

  2.1 別害怕,因為面試官什么都不知道

  面試官是人,不是神,拿到你的簡歷的時候,是沒法核實你的項目細節的(一般公司會到錄用后,用背景調查的方式來核實)。更何況,你做的項目是以月為單位算的,而面試官多用30分鐘來從你的簡歷上了解你的項目經驗,所以你對項目的熟悉程度要遠遠超過面試官,所以你一點也不用緊張。如果你的工作經驗比面試官還豐富的話,甚至還可以控制整個面試流程(筆者在面試方面成精后也經常干這種事情,大家一定也能行)。

  既然面試官無法了解你的底細,那么他們怎么來驗證你的項目經驗和技術?下面總結了一些常用的提問方式。

  2.2 面試時的錯誤表現

  在面試過程中,如果候選人出現如下的表現,那么很有可能過不了面試,請大家注意。

  1. 面試時介紹的項目時間等情況簡歷上寫的不一致,這就有簡歷造假的嫌疑;

  2. 介紹項目時只介紹業務,忽略技術。因為面試官只關心技術,不關心業務;

  3. 對于提到的技術,連基本的問題也回答不上,這就說明候選人這項技術沒掌握;

  4. 說得太流利或太磕磕巴巴,這就說明在背詞或者是表達有問題。

  2.3 面試中介紹項目的范例

  第一步,介紹項目基本情況。

  可以這樣說,這個項目是xx產品的xx模塊的,有xx和xx模塊,我做了xx模塊,用了半年,我的組里一共有5個人。這里可以談下業務,但別深入,因為面試官不熟悉,也不想熟悉候選人的業務,這塊時間控制在1分鐘之內。

  第二步,介紹項目里關鍵技術和管理方式。

  可以這樣說,這個項目里,我用到了Spring框架,用到nginx等組件,項目管理用Maven,部署用jenkins,靜態掃描用Sonar,任務管理和bug管理用jira,平時采用敏捷的項目迭代方式,每天有站會,大約1月一個迭代版本。這塊可以根據自己的情況來介紹,時間也別太長,估計用1分鐘也就夠了。

  第三步,結合業務講用到的技術,但別展開:

  比如有個職位介紹,里面寫到需要有數據庫優化的經驗,那么可以說,項目里xx模塊,我用到MyCat作為分庫分表,(不展開技術),上線后,數據庫能承受住每秒2000個并發請求(說下用好的結果)。

  又如一個JD里說要用到微服務技術,那么就可以說,項目里用到了Spring Cloud框架,用到了Ribbon,Eureka等組件,容器是Docker。用好以后,在發布時會發現,各模塊之間的調用耦合性大大降低。

  2.4 介紹項目時的要點歸納

  從上述介紹項目的范例中,可以歸納出相關要點如下。

  1. 面試前,需要閱讀職位介紹,挖掘用過的技能要點,然后盡可能地在介紹項目里提到這些技能關鍵字;

  2. 在介紹項目里,結合業務,提到職位介紹里的技術,因為一旦技術結業業務,就說明你有過相關技術的實踐經驗,而不是僅僅只會理論;

  3. 別過多介紹業務,多拋出職位介紹里的關鍵字。還是這句話,面試官不關心業務,你提到業務只是以此證明你在實踐中用過相關技術而已;

  4. 此時還在項目介紹階段,別過多展開技能,你拋出技能關鍵字后,面試官自然會問的。而一旦你過多展開技術,那么面試官就有可能感覺到你思路不清晰。

  Java面試者該準備哪些加分項技能

  3.1框架是重點,但別讓人感覺你只會山寨別人的代碼

  一般工作在3年內的候選人,大多僅僅是能“山寨”別人的代碼,也就是說能在現有框架的基礎上,照著別人寫的流程,擴展出新的功能模塊。比如要寫個股票掛單的功能模塊,是會模仿現有的下單流程,然后從前端到后端再到數據庫,依樣畫葫蘆寫一遍,多把功能相關的代碼點改掉。

  如果單純使用SSM框架,大多數項目都會有痛點。比如數據庫性能差,或者業務模塊比較復雜,并發量比較高,用Spring MVC里的Controller無法滿足跳轉的需求。所以我一般還會主動問:你除了依照現有框架寫業務代碼時,還做了哪些改動?

  我聽到的回答有:增加了Redis緩存,以避免頻繁調用一些不變的數據。或者,在MyBitas的xml里,select語句where條件有is,即這個值有就增加一個where條件,對此,會對任何一個where增加一個不帶is的查詢條件,以免該語句當傳入參數都是時,做全表掃描。或者,干脆說,后端異步返回的數據量很大,時間很長,我在項目里就調大了異步返回的大時間,或者對返回信息做了壓縮處理,以增加網絡傳輸性能。

  對于這個問題,我不在乎聽到什么回答,我只關心回答符不符邏輯。一般只要答對,我就會給出“在框架層面有自己的體會,有一定的了解”,否則,我就只會給出“只能在項目經理帶領下編寫框架代碼,對框架本身了解不多”。

  其實,在準備面試時,歸納框架里的要點并不難,我就不信所有人在做項目時一點積累也沒,只要你說出來,可以說,這方面你就碾壓了將近7成的競爭者。

  3.2 別單純看單機版的框架,適當了解些分布式

  在描述項目里框架技術時,好你再帶些分布式的技術。下面我列些大家可以準備的分布式技術。

  反向代理方面,nginx的基本配置,比如如何通過lua語言設置規則,如何設置session粘滯。如果可以,再看些nginx的底層,比如協議,集群設置,失效轉移等;

  遠程調用dubbo方面,可以看下dubbo和zookeeper整合的知識點,再深一步,了解下dubbo底層的傳輸協議和序列化方式;

  消息隊列方面,可以看下kafka或任意一種組件的使用方式,簡單點可以看下配置,工作組的設置,再深入點,可以看下Kafka集群,持久化的方式,以及發送消息是用長連接還是短攔截。

  以上僅僅是用3個組件舉例,大家還可以看下Redis緩存,日志框架,MyCAT分庫分表等。準備的方式有兩大類,第一是要會說怎么用,這比較簡單,能通過配置文件搭建成一個功能模塊即可,第二是可以適當讀些底層代碼,以此了解下協議,集群和失效轉移之類的高級知識點。

  3.3 數據庫方面,別就知道增刪改查,得了解性能優化

  在實際項目里,大多數程序員用到的可能僅僅是增刪改查,當我們用Mybatis時,這個情況更普遍。不過如果你面試時也這樣表現,估計你的能力就和其它競爭者差不多了。

  這方面,你可以準備如下的技能:

  SQL高級方面,比如group by, having,左連接,子查詢(帶in),行轉列等高級用法;

  建表方面,你可以考慮下,你項目是用三范式還是反范式,理由是什么?

  尤其是優化,你可以準備下如何通過執行計劃查看SQL語句改進點的方式,或者其它能改善SQL性能的方式(比如建索引等);

  如果你感覺有能力,還可以準備些MySQL集群,MyCAT分庫分表的技能。比如通過LVS+Keepalived實現MySQL負載均衡,MyCAT的配置方式。同樣,如果可以,也看些相關的底層代碼。

  哪怕你在前三點表現一般,那么至少也能超越將近一般的候選人,尤其當你在SQL優化方面表現非常好,那么你在面試高級開發時,數據庫層面一定是達標的,如果你連第四點也回答非常好,那么恭喜你,你在數據庫方面的能力甚至達到了初級架構的級別。

  3.4 Java核心方面,圍繞數據結構和性能優化準備面試題

  Java核心這塊,網上的面試題很多,不過在此之外,大家還應當著重關注集合(即數據結構)和多線程并發這兩塊,在此基礎上,大家可以準備些設計模式和虛擬機的說辭。

  下面列些我一般會問的部分問題:

  String a = "123"; String b = "123"; a==b的結果是什么?這包含了內存,String存儲方式等諸多知識點;

  HashMap里的hashcode方法和equal方法什么時候需要重寫?如果不重寫會有什么后果?對此大家可以進一步了解HashMap(甚至ConcurrentHashMap)的底層實現;

  ArrayList和LinkedList底層實現有什么差別?它們各自適用于哪些場合?對此大家也可以了解下相關底層代碼;

  volatile關鍵字有什么作用?由此展開,大家可以了解下線程內存和堆內存的差別;

  CompletableFuture,這個是JDK1.8里的新特性,通過它怎么實現多線程并發控制?

  JVM里,new出來的對象是在哪個區?再深入一下,問下如何查看和優化JVM虛擬機內存;

  Java的靜態代理和動態代理有什么差別?好結合底層代碼來說。

  通過上述的問題點,我其實不僅僅停留在“會用”級別,比如我不會問如何在ArrayList里放元素。大家可以看到,上述問題包含了“多線程并發”,“JVM優化”,“數據結構對象底層代碼”等細節,大家也可以舉一反三,通過看一些高級知識,多準備些其它類似面試題。

  3.5 Linux方面,至少了解如何看日志排查問題

  如果候選人能證明自己有“排查問題”和“解決問題”的能力,這絕對是個加分項,但怎么證明?目前大多數的互聯網項目,都是部署在Linux上,也就是說,日志都是在Linux,下面歸納些實際的Linux操作。

  能通過less命令打開文件,通過Shift+G到達文件底部,再通過?+關鍵字的方式來根據關鍵來搜索信息;

  能通過grep的方式查關鍵字,具體用法是, grep 關鍵字 文件名,如果要兩次在結果里查找的話,就用grep 關鍵字1 文件名 | 關鍵字2 --color。后--color是高亮關鍵字;

  能通過vi來編輯文件;

  能通過chmod來設置文件的權限。

  當然,還有更多更實用的Linux命令,但在實際面試過程中,不少候選人連一條linux命令也不知道。還是這句話,你哪怕知道些很基本的,也比一般人強了。

  3.6 通讀一段底層代碼,作為加分項

  如何證明自己對一個知識點非常了解?莫過于能通過底層代碼來說明。我在和不少工作經驗在5年之內的程序員溝通時,不少人認為這很難?確實,如果要通過閱讀底層代碼了解分布式組件,那難度不小,但如果如下部分的底層代碼,并不難懂。

  ArrayList,LinkedList的底層代碼里,包含著基于數組和鏈表的實現方式,如果大家能以此講清楚擴容,“通過枚舉器遍歷“等方式,絕對能證明自己;

  HashMap直接對應著Hash表這個數據結構,在HashMap的底層代碼里,包含著hashcode的put,get等的操作,甚至在ConcurrentHashMap里,還包含著Lock的邏輯。我相信,如果大家在面試中,看看而言ConcurrentHashMap,再結合在紙上邊說邊畫,那一定能征服面試官;

  可以看下靜態代理和動態代理的實現方式,再深入一下,可以看下Spring AOP里的實現代碼;

  或許Spirng IOC和MVC的底層實現代碼比較難看懂,但大家可以說些關鍵的類,根據關鍵流程說下它們的實現方式。

  其實準備的底層代碼未必要多,而且也不限于在哪個方面,比如集合里基于紅黑樹的TreeSet,基于NIO的開源框架,甚至分布式組件的Dubbo,都可以準備。而且準備時未必要背出所有的底層(事實上很難做到),你只要能結合一些重要的類和方法,講清楚思路即可(比如講清楚HashMap如何通過hashCode快速定位)。

  那么在面試時,如何找到個好機會說出你準備好的上述底層代碼?在面試時,總會被問到集合,Spring MVC框架等相關知識點,你在回答時,順便說一句,“我還了解這塊的底層實現”,那么面試官一定會追問,那么你就可以說出來了。

  預估面試題,準備對應的回答

  4.1 哪些問題面試中大概率會被問到

  在面試里,不管如何引導面試官,其實如下方面的問題很大可能會被問到,所以在面試前可以提前準備。

  職位介紹里提到的技能要點,比如職位介紹里有提到Mybatis,那么面試官一定會問相關問題;

  你在項目介紹時拋出的技術關鍵字,比如你在面試過程中介紹項目時提到了Redis,那么在介紹完項目后,面試官就會問,“你項目里是如何使用Redis的?”,類似的,簡歷中你寫的技術,也有可能會被問到;

  Java核心,數據庫,Spring框架,項目管理等基礎問題,這些就不用說了,不過如果你引導得當的話,面試官會花費很多時間問你提到的技術,這塊會問得比較少;

  必要的算法題,比如排序等,其實面試官感覺你技術可以的話,這塊就不怎么會問了,但準備的時候需要看這個,有備無患。

  4.2 面試官提問的方式

  以上介紹了常見問題的種類,這里介紹下面試官常用的提問方式。

  問用法,比如直接提問,項目里你netty怎么用的?這塊大家可以結合項目準備說辭;

  問流程,比如結合業務,講下nginx負載均衡的用法?這也可以結合項目和網上搜到的資料準備說辭;

  問原因,比如為什么要用netty?這塊就要結合項目說明了;

  問技術點, 比如netty里零拷貝怎么回事?對此,需要對簡歷上提到的每個技術點,以及面試過程中將要提到的每個技術點,搜相關面試問題,并結合業務說明;

  問基礎知識,比如finally從句的用途,這就可以通過刷題來獲取了。

  4.3 舉例說明該如何準備面試問題

  下面給出準備問題的技巧。

  斟酌面試時拋出的技能,逐一準備說辭;

  針對技術,網上搜索問題,比如搜Spring IOC面試題,結合網上的參考答案準備說辭;

  準備技術的實施要點,比如做了哪些配置文件,你在項目里踩過哪些坑?

  好結合底層代碼說明。

  如下給出兩個例子,先以MyCat分庫分表為例,給出介紹說辭的技巧。

  準備業務背景,為什么要用?比如我們項目數據庫并發壓力大,需要用MyCat作為分庫分表;

  如何使用,無非是設置分庫規則,改寫SQL語句等;

  準備下踩到的坑,比如自增長主鍵在每臺機器上都要保證唯一;

  然后再結合些底層代碼,準備下一條SQL語句是如何分發到對應的分庫上的,然后執行好以后又如何返回的;

  再可以準備些只有做過才知道的細節,比如發布上線和清洗數據的流程;

  網上找些MyCAT的面試題,準備相關說辭。

  一般說到了這里,面試官就不怎么問了,哪怕你后面再被問倒,面試官也會感覺你MyCat很熟悉。

  下面以Netty為例,給出相關技巧。

  結合業務需求點,說下為什么要用這個技術,怎么用的,以及用了有什么好處? 比如為了優化網絡通訊協議,所以用基于TCP協議的Netty,業務模塊里的xxx功能是用到netty;

  準備下踩到的坑,比如在某業務場景里,我遇到了半包粘包問題,我是通過調試底層代碼解決的;

  用了Netty對項目的幫助。比如Netty是基于TCP協議的,它要比Http協議要輕,所以通訊性能高,且Netty內部的Reactor線程模型對系統的IO幫助很大;

  基于零拷貝、讀寫索引和異步處理機制,準備些底層代碼,在面試里說明;

  順帶再準備下Netty的組件,工作流程等問題,這能搜到問題和相關說辭。

  在講的時候,大家甚至可以邊畫Netty流程圖,再結合底層代碼說明,這樣面試官一定會對大家刮目相看。

  其實這里僅僅是拋磚引玉,或者提到的技術比較高深 ,但可以講述的技術還可以是線程池,MyBatis組件,Redis,甚至是虛擬機優化等。哪怕是初級開發,也能多少抓住一兩個點,按上述思路說明。

  面試時如何不被面試官牽著鼻子,自我把控面試的走向?

  5.1 在介紹項目時,引導話題的技巧以及案例

  在做項目介紹的時候,你可以穿插說出一些你的亮點,但請記得,不論在介紹項目還是在回答問題,你當前的職責不是說明亮點而是介紹項目,一旦你詳細說,可能會讓面試官感覺你跑題了。

  所以這時你可以一筆帶過,比如你可以說,“我們的項目對數據要求比較大,忙的時候平均每小時要處理幾十萬條數據”,這樣就可以把面試官引入“大數據”的方向。

  你在面試前可以根據職位的需求,準備好這種“一筆帶過”的話。比如這個職位的需求點是Spring MVC框架,大數據高并發,要有數據庫調優經驗,那么介紹以往項目時,你就好突出這些方面你的實際技能。

  再給大家舉個例子,比如Java虛擬機內存管理和數據庫優化是絕大多數項目都要遇到的兩大問題,大家都可以在敘述項目經驗時說,在這個項目里,我們需要考慮內存因素,因為我們的代碼只允許在2G內存環境中運行,而且對數據庫性能要求比較高,所以我們經常要監控優化內存和數據庫里的SQL語句。這樣當面試官深入提問時,就能拋出自己準備好的虛擬機內存優化和數據庫優化方面的說辭。

  或者說,在項目介紹時提到,在xx模塊里,我們使用了nginx做負載均衡,達到了承受百萬級并發的效果,從而引出nginx的話題。

  實在不行,你也可以說“我除了做開發,也做了了解需求,測試和部署的工作,因為這個項目人手比較少,壓力比較大”,這樣你也能展示你有過獨擋一面的經歷。

  5.2 以Netty為例,講述引出值錢話題的技巧

  比如在介紹項目時,我提到了Netty技術,如果面試官沒打斷,我就問,能否介紹其中的Netty細節?得到允許后再說。

  或者把技術關聯到面試官可能會問的問題上,比如問及網絡通訊時介紹Netty,這個事先整理一個問題列表,遇到此類問題,順帶拋出Netty說辭。

  問題列表可以是,項目里你用到哪些組件?用到哪些通訊協議?如何進行模塊間的交互等等,然后先回答問題本身,再擴展到Netty。但請記住,別自說自話,因為過猶不及,其它技術照此辦理

  5.3 以案例說明,在回答問題時引出準備過話題的技巧

  比如面試官問你Spring相關問題,假設問到,你對Spring依賴注入了解多少,在說好Spring相關問題后再提一句,我們同時用Spring,以低耦合的方式整合了MyCAT組件,從而達到了分庫分表的效果,這樣就引出了分庫分表的話題 。

  或者在介紹Netty流程后,再說一句,在實際項目里,我們還遇到了因Netty底層代碼而導致的OOM問題,對此,我們組負責排查和解決問題,這樣就自然而然地引出了OOM內存溢出的問題。

  或者在介紹完線程相關問題時,再提一句,在項目里,我們用到了線程池來管理線程,這樣就引出了高并發的話題。

  但在引導的時候,請注意如下的三點。

  第一,面試官不接口的,應當立即停止,再說下去就屬于自說自話了。

  第二,還是要準備必要的基礎問題,還是要刷題,還是要準備各種說辭,因為面試前的全面準備,是引導的基礎。

  第三,應當引導面試官問些“框架”和“性能調優”等值錢方面的技能,這樣才能大程度地展示你的能力,同樣,此類問題需要面試前準備。

  5.4 你可以引導的加分項

  在如下的一些表格里,歸納的加分項甚至初級開發多少也能準備,其中涵蓋了諸多方面。

  表 Java Core方面可以準備的亮點

  技術方面可以說的亮點

  Java集合對象1 能根據項目的需求選用合適的集合對象,比如知道ArrayList和LinkedList的差異,并能合理選用。

  2 能在合適的場合選用WeakHashMap。

  3 可以適當講一些集合的JDK底層實現代碼。

  異常處理方面能在finally從句里寫釋放資源的代碼

  JDBC方面1 能通過PreparedStatement的預處理方法來防止SQL注入。

  2 能通過批處理來提升操作性能。

  3 能通過實例講述事務隔離級別的含義

  多線程方面1 會結合項目使用線程池

  2 能通過鎖或信號量等手段正確地處理多線程并發時的數據一致性。

  3 熟悉各種并發組件

  表 數據庫方面可以準備的亮點

  技術方面可以說的亮點

  建表建表時需要根據項目的數據情況,考慮是采用三范式或是反范式。

  SQL調優1 可以通過查看日志等方式看哪些SQL需要調優。

  2 可以通過執行計劃查看SQL的所消耗的代價,并據此調優。

  3 可以通過建索引,建分區等手段來優化SQL性能。

  事務1 可以說下JDBC或Spring里是如何管理事務的。

  2 可以說下Spring里的聲明式事務的做法和優點。

  3 可以舉例說明事務隔離級別和事務傳播機制的用法。

  分布式數據庫1 可以通過MyCAT進行分庫分表,從而減輕對單表訪問所需要的代價。

  2 可以通過集群等方式來承擔對數據庫的過量的訪問請求。

  NoSQL和Hadoop這兩個本身就是個亮點,如果大家用過,可以結合項目來說明。

  表Java Web框架方面可以準備的亮點

  技術方面可以說的亮點

  Spring MVC/Boot架構1 可以說下Spring的IOC和AOP是如何優化項目結構的。

  2 可以說下攔截器等Spring組件對項目的幫助。

  3 可以說下Spring Boot對項目的幫助

  ORM,比如Mybatis使用這種ORM技術時,如何優化訪問和操作數據庫的性能。

  Spring和Mybatis等的整合可以講下整合框架的細節,并可以舉例說明整合后的框架能很好地適應需求的變更。

  表 分布式組件方面可以準備的亮點

  技術方面可以說的亮點

  組件應用1 結合配置文件等,說明怎么用的

  2 結合業務,說下具體的效果,比如限流后有什么好處。

  如何應對高并發的場景1 如何達到負載均衡

  2 如何進行失效轉移

  定位排查和解決問題1 如何通過分析log定位問題

  2 問題的根源和解決方法

  健康檢查和線上監控1 如何通過健康檢查確定系統正常運行

  2 出了問題,如何發出警告

  由此大家能看到,其實很多事先可以準備的點,其實是你沒有想到,但你項目里一定用過。你據此準備,在通過上述技巧在面試中合理地找機會說出來,你面試成功的可能性一定會大大增加。

  總結,面試準備后,結果可能就大不同

  先從面試官的角度看下,哪些人能面試成功?

  1. 近半年的項目經歷和JD匹配度很高;

  2. 通過面試,JD上的技能候選人大多能掌握;

  3. 候選人在Java核心,數據庫和框架方面的基礎技能達標;

  4. 不是刺頭,團隊合作沒問題,沒有其它大問題。

  但如果大家面試前不準備,或者準備不到位,那么就會面臨如下的后果了:

  1. 簡歷未必能過篩選,甚至沒有面試機會;

  2. 無法證明項目里用到的技術和JD高度契合;

  3. 介紹項目經驗時沒問題,把提問的主動權交給面試官;

  4. 不知道將會問哪些問題,所有問題都現場想;

  5. 在面試現場,沒法讓面試官全面了解你的技術亮點。

  但如果按照上述方法準備,大家很大程度上能得到如下的收獲。

  1. 能通過微調簡歷,得到更多的面試機會;

  2. 能通過挖掘項目經驗,證明自己的技能和JD契合;

  3. 能知道哪些屬于值錢技能,并能結合業務準值錢技能和調優技能的說辭,而且能不露痕跡地展示;

  4. 不僅限于coding,更能展示項目管理(sonar等),linux,項目部署(nginx)等方面的技能;

  5. 知道面試大致會問哪些問題,并由此能事先準備;

  6. 能事先盡可能多地挖掘亮點,并在面試時展示。


本文內容、圖片由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至2353260942@qq.com 舉報,一經查實,本站將立刻刪除。(如需投稿聯系管理員開通!)

? CopyRight njjava.com ???? 蘇ICP備14052071號

搶試聽名額

名額僅剩66名

教育改變生活

WE CHANGE LIVES