1. 程式人生 > >面試經驗總結(2018)

面試經驗總結(2018)

  • 前言

今年由於個人原因換了份工作,年底找工作不是很好找,面試不是很多。其實主要還是自己水平跟不上的原因,隨著工作年限的增加,要求知識面會越來越廣。後面找了一段時間終於有公司肯簽下我這個全明星前鋒(自我安慰)了,所以在這裡對面試做個總結,提醒下自己要不斷地學習,同時也希望可以給正在求職的童鞋一個參考吧。這個經驗總結主要是從自身出發,有些地方也許寫的不夠好或者不夠全面,希望可以理解一下。然後面試的問題答案我就將一些寫的比較好的部落格連結上去就行。

  • 適用物件

工作年限:0-2年
工作地點:深圳
工作崗位:java開發

  • 簡歷的書寫

去面試用的簡歷建議使用markdown來編輯,而不是直接用招聘網站的模板。一方面給面試官一種乾淨整潔的第一印象,另一方面顯得你比較專業。
這裡推薦兩種方式:
線上編輯:

冷熊簡歷
本地編輯器:markdownpad 以及破解方法

  • 書寫建議

(1)書寫原則,可進行適當的包裝,提高競爭力。
(2)專案經驗不在多,在於含金量。如果你在職期間做了很多個專案,個人不建議你全部寫上去,一般一年做三到四個即可,每個專案時間起碼四個月。
(3)專案內容可以簡單的寫一下業務背景,主要的功能模組和用到的技術,然後再詳細的描述下你在專案中擔任的角色和做的工作。
備註:如果你的面試比較少,很大原因是你的簡歷寫的不夠好,不夠吸引HR,,所以建議是修改簡歷,適當的包裝一下來獲取面試機會。

  • 面試技巧

說實話,每次面試的問題都不大相同,所以並沒有針對性的準備,而且崗位要求只能簡單的參考,因為很多時候問的問題都跟要求上面寫的沒啥關係。面試問題一般是從簡歷出發,看看你用到了哪些技術,具體是如何使用的,它的底層原理是如何實現的,使用這個存在哪些問題,有哪些更好的替代方案。
面試回答問題的時候,儘量體現你對知識的廣度和深度。他問你一個點,如果你回答這個點,那麼你會達到及格,如果你可以從這個點出發回答一個面,那麼你將達到優秀,給面試官一種你不僅會用API也會去學習底層原理的可塑之才。其實很多面試問題都可以當做開放性問題來答,要大膽的說出自己對這方面的理解,這樣會得到一些好的印象。
備註:我這裡總結了下,面試少是簡歷寫的不夠好,不具有競爭力,面試不通過是自己表現的不好。所以我的建議是認真對待每一次面試,好好準備,用自己最飽滿的精神去迎接挑戰,切不可吊兒郎當,還沒開始心就虛了。然後每次面完做個簡單的總結,看看還有什麼需要調整的,這樣每次面試完你都會有所提高。

  • 面試前的準備

面試經常問到的範圍是
(1)static和String的原理
(2)集合框架
(3)多執行緒和執行緒安全
(4)常用的設計模式
(5)SpringMVC的工作原理
(6)Spring的IOC和AOP底層原理和使用範圍
(7)mybatis原理和如何避免Sql注入
(8)資料庫部分:事務,索引,sql優化和大表優化

(9)Redis相關
(10)JVM虛擬機器原理

  • 面試資料分享

以上面試常問的問題可在下面這兩個連線找到答案:
別人的倉庫:https://github.com/flypangzhi/JavaGuide
我的文件:https://github.com/flypangzhi/JAVA_Interview/blob/master/面試必備(2018版).docx

  • 基礎部分

static、final、this、super關鍵字總結

  • 集合框架部分

這部分的內容基本每次都會問到,有時候面試官還會出一些場景題來問你,比如說同時往ArrayList和linkedList裡面不斷地放元素,在發生記憶體溢位的時候,哪個集合裡面的元素會更多。或者你自己如何實現一個arrayList。所以我建議這部分最好可以去看原始碼或者原始碼分析,從程式碼上去學習和理解,切勿進行死記硬背。
首先我們先看下集合的大概情況:
在這裡插入圖片描述

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

常見問題:你對集合有什麼瞭解,你常用的資料結構有哪些?
回答建議:回答這個問題不必面面俱到將每個集合都講一遍,說一下自己常用的集合即可,最好可以進行對比。可以按照下方這個順序來回答,最好可以理解並用自己的語言總結概括下,這樣印象會很深。

(1)從原始碼分析ArrayList
(2)為什麼說ArrayList是執行緒不安全的
(3)JDK 1.8 LinkedList原始碼分析
(4)LinkedList執行緒安全問題
(5)說了這些之後建議對這兩個做個對比總結,然後進入下一步
(6)HashMap實現原理及原始碼分析
(7)併發下HashMap為什麼不是執行緒安全的
(8)關於HashMap最好可以講一下JDK8資料結構有哪些變化,有時間可以去了解下紅黑樹。
(9)map中哪個是有序的,請看LinkedHashMap原始碼解析(JDK8)
(10)然後這時候可以說一句,這些是我常用的集合,但這些都不是執行緒安全的,然後就引出如何獲取執行緒安全的集合。獲取方法可以參考我的文件。
(11)ConcurrentHashMap實現原理以及原始碼解析
(12)CopyOnWriteArrayList實現原理及原始碼分析

基本上回答道這裡就差不多了,也許你覺得內容有點多,但是從底層分析問題可以看出你知識的廣度和深度,給面試官一種對於技術研究深刻的好感。

  • 多執行緒相關

常見問題:你對多執行緒有了解嗎,如何實現執行緒安全?
回答建議:這個可以簡單的說一下什麼時候會出現執行緒安全,然後再說如何保證執行緒安全。具體可參考我的文件。然後在對裡面用到的技術做一個詳細的分析,比如說synchronized是如何實現執行緒安全。具體可參考Java併發程式設計指南

  • 常用的設計模式

這個可以主要講三個:工廠模式,單例模式,代理模式。具體可參考設計模式相關文章,其實這裡我建議在講了三大框架原理之後再講用到的設計模式會更好,可以突出聯絡。

  • 三大框架(springMVC,spring,mybatis)

一般問的是底層原理以及使用場景,還有會進行對比,比如說hibernate和mybatis的區別,或者說使用mybatis會有哪些優勢。具體可參考我的文件。
mybatis底層原理分析

  • 資料庫部分

主要還是索引資料結構和SQL優化問的比較多,把這系列的文章看完即可。
https://github.com/Snailclimb/JavaGuide/blob/master/資料儲存/MySQL.md
如果你用過oracle的話,很多時候需要做mysql和oracle的對比,可參考我的文件。

  • linux基礎知識

如果還有時間的話,建議去了解下linux常用的命令,這個是必備的知識。

  • 有空建議去學習的知識

git易百教程
springBoot和springCloub
redis菜鳥教程

最後,如果還有時間的話,建議去學習下一些新的知識,不僅可以提高自身水平,也可以給簡歷加點分。希望各位都可以找到自己心怡的工作,我一直覺得寫程式碼不單單是一項工作,更是在設計作品,實現功能只是基本,如果有時間的話會進行優化讓它效能更高更具維護性,這就需要自己不斷地學習,希望你也能跟我一樣,哈哈