主頁 > 資料庫 > 一步步教你搞定 Java 初級和高級技術面試

一步步教你搞定 Java 初級和高級技術面試

2020-09-19 16:21:28 資料庫

最近幾年公司的大小招聘,社招、校招都有參與,面試過許多大牛,也遇到過很多職場小白,有十多年作業經驗的,也有剛剛畢業來面外包的,其中來面試的不乏一輪游的,看著有些同學基礎浮夸、做著重復的專案也沒有任何總結沉淀,自我介紹完全不知道在說啥等等諸如此類的現狀,想想自己也是從那個層次一步步走上路的,也經歷了許多坎坷,覺得有必要把我的面試經驗跟大家分享一下,希望能幫助大家找到一份滿意的作業,

本篇文章,你將學到以下知識:

  • Java基礎知識
  • Java核心知識
  • Java必問專題多執行緒鎖設計模式
  • Java框架SpringSpring Boot/Spring CloudMyBatis
  • 分布式系統基礎中間件ZookeeperRedisActiveMQ
  • MySQL
  • JVM
  • 如何準備技術面試

由于篇幅有限,這里只跟大家分享如何準備技術面試,其余的知識點我已經整理成檔案,有需要的朋友可以點一點下方鏈接免費領取!

鏈接:1103806531暗號:CSDN

在這里插入圖片描述

如何準備Java初級和高級的技術面試

一. 換位思考下,如果你是面試官,你會怎么做

1.只能通過簡歷和面試來衡量,別無他法,如果某位大牛確認能力很行,但面試時無法充分地自證能力,那對不起了,過不了,現實就這樣,

2.如果面試官由于能力不行,招進來一個大忽悠,那估計會被領導罵,而且再也不會被讓面試了,給領導的印象就不好了,所以不能評主觀印象,而是會有些客觀標準,具體而言,就是從多個方面問些題目,答好答壞就看候選人的,

其實一些題目都差不多,但不同能力的面試官問問題的切入點和漸行程度會不同,而且有經驗的面試官會挖掘候選人的優勢,并能從候選人的說辭中判斷候選人是真懂還是忽悠,

二. 架構方面需要準備的點

初級開發而言,需要讓面試官感覺出如下的要點,

1.熟悉SSM架構,至少在專案里做過,

這個的說法是,介紹專案時,用一個業務流程來說spring mvc如何做的,

2.知道Spring MVC中的細節,比如@Autowired的用法,如何把url映射到Controller上,ModelAndView物件回傳的方式等,

3.最好結合專案的用法,說下你是怎么用AOP,攔截器的,比如說可以通過攔截器攔截非法請求,怎么用 AOP輸出日志等,

4.關于ORM方面,不限用過哪種,但得知道一對一,一多多,多對多等的用法,以及cascade和inverse的用法,

5.最好知道宣告式事務的做法,

如果你要應聘高級開發,那在上述基礎上,最好了解如下的知識點:

  • Spring Bean的周期
  • 最好能通過閱讀源代碼,說下IOC,AOP以及Spring MVC的作業流程
  • 最好能結合反射,說下IOC等的實作原理
  • Spring Boot和Spring Cloud的一些知識點

三. 資料庫方面需要準備的點

不少候選人會看很多SQL的技巧,比如select該怎么寫,insert又該怎么寫,但僅限于此,不會再準備其它的,

這樣就很吃虧,因為面試官會認為,哪怕是初級開發,SQL陳述句也該會寫,所以這塊不會多問,而會問如下方面的問題,

1.索引怎么建的,怎么用的?比如我建好了一個索引,在where 陳述句里寫 name like '123%'會不會走索引,怎么情況下不該建索引,哪些陳述句不會走索引,

2.除了索引之外,你有過哪些SQL優化方面的經驗,比如分庫分表,或通過執行計劃查看SQL的優化點,這最好是能結合你做的專案實際來講,

這里,我面試下來,大概有70%的候選人只知道基本SQL的寫法,所以哪怕你是只有理論經驗,會說一些優化點,也是非常有利的,

這塊對于高級開發而言,更得了解優化方面的技能,

在這里插入圖片描述

四. Java Core方面需要準備的點

這塊是基礎,其實很多問的問題,候選人一定會在專案里用到,但很少能說好說全,

這塊主要會從集合,多執行緒,例外處理流程以及JVM虛擬機這些方面來問,

集合方面:

1.hashcode有沒有重寫過?在什么場景下需要重寫,如果可以,結合hash表的演算法,說下hashmap的實作原理,

對于高級開發而言,最好通過ConcurrentHashMap來說明下并發方面的底層實作代碼,

2.ArrayList,LinkedList的差別,比如一個基于陣列,一個基于鏈表,它們均是執行緒不安全的,ArrayList的擴容做法等,

對于高級而言,最好看下底層的代碼,

3.Set如何實作防重的,比如TreeSet和HashSet等,

4.Collection的一些方法,比如比較方法,包裝成執行緒安全的方法等,

5.可能有些面試官會問,如何通過ArrayList實作佇列或堆疊,這個可以準備下,

多執行緒方面,其實在專案里不怎么會用到,但會問如下的問題:

1.synchronized和可重入鎖的差別,然后可能會順便問下信號量等防并發的機制,

2.在執行緒里該如何回傳值,其實就是callable runnable 區別,

3.一定得通過ThreadLocal或volatile關鍵字,來說明執行緒的記憶體模型,

4.執行緒池方面,會用,了解些常用引數

執行緒方面,可能問得比較多的就是并發機制,如果是高級開發,可能會問得深些,

虛擬機方面

1.結構圖和流程可以大致說下,

2.一定得了解針對堆的垃圾回識訓制,具體而言,可以畫個圖,說下年輕代年老代等,

3.說下垃圾回收的流程,然后針對性地說下如何在代碼中優化記憶體性能,

4.最好說下如果出現了OOM例外,該怎么排查?如何看Dump檔案,

5.GC的一些概念,比如強弱軟參考,finalize方法等,這些可以準備下,

在這里插入圖片描述

五. 我面試的感受&聽到哪類回答就能證明候選人比較資深

1.大多數的候選人(大概7成)直接就來了,不做任何準備,要知道,面試和專案其實有些脫節,哪怕專案做得再好,不做準備照樣通不過,只要我確認過這類人確實無法達標,我拒掉他們沒任何心理負擔,誰讓他們不準備?

2.還有些候選人態度很好,明顯準備過,但沒準備到位,比如像剛才所說,只準備了演算法,或者在Java Core方面,只看了集合方面的面試題,對于這些同學,哪怕是過了,我也會感到惋惜,畢竟如果面試好些的話,工資也能更高些,至于哪些過不了的,我敢說,如果他們準備過,估計就不是這個結果了,

其實我也知道,人無完人,哪怕我自己去面試,也不可能面面俱到,所以,我不會要求候選人什么問題都能回答出,甚至大多答錯也沒關系,只要能證明自己的能力即可通過面試,

我也和不少面試官交流過,根據我們的經驗,如果候選人能說出如下的知識點,即能證明他在這個領域比較資深了,在這塊,我可能就不會過多地問問題了,

架構方面

1.能證明自己可以干活(這不難),同時能結合底層代碼說出IOC,AOP或Spring MVC的流程,只要能說出一個即可,或者能說出攔截器,Controller等的高級用法,

2.能證明自己有Spring Boot或Spring Cloud的經驗,比如能說出些Spring Cloud組件的用法,

3.如果能證明自己有分布式開發的經驗,那最好了,其實這不難證明,比如能說出服務的包是放在多臺機器上(大多數公司其實都這樣),而且能說出如何部署,如何通過nginx等做到負載均衡,

資料庫方面,其實講清楚一個問題即可:如何進行SQL調優,比如通過索引,看執行計劃即可,如果有其它的優化點,說清楚即可,

Java Core方面,這里給出些訣竅:

1.能結合ConcurrentHashMap的源代碼,說出final,volatile,transient的用法,以及在其中如何用Lock物件防止寫并發,

2.結合一個專案實際,說下設計模式的實踐,

3.多執行緒方面,能說出Lock或volatile等高級知識點的用法,

4.這塊最取巧:說下GC的流程,以及如何通過日志和Dump檔案排查OOM例外,如果再高級些的話,說下如何在代碼中優化記憶體代碼,

訣竅點歸結成一個:能結合源代碼或專案實際,說出些比較資深的問題,

最后

希望這篇文章對大家有幫助!

我這邊也整理了一份 架構師全套視頻教程 和關于java的系統化資料,包括java核心知識點、面試專題和20年最新的互聯網真題、電子書等都有,

有需要的朋友可以點一點下方鏈接免費領取!

鏈接:1103806531暗號:CSDN

在這里插入圖片描述
在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82310.html

標籤:其他

上一篇:Nacos Go微服務生態系列(一) | Dubbo-go 云原生核心引擎探索

下一篇:架構師修煉系列【微服務】

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more