最開始是打算面試外包公司刷經驗,等經驗差很少了,再去甲方嘗試,惋惜不太順利。前端
1、邁思(面試了30分鐘)
- 自我介紹
- 左鏈接(a 表左鏈接 b 表,a 表所有數據出來,b 表沒有的數據爲空)
- a 表左鏈接 b 表,b 表左鏈接 c 表,c 表左鏈接 a 表,這樣的數據是什麼數據(博主當時有點懵,回答全鏈接,所有數據會出來。。。)
- sql:一個班的學生有兩個字段,一個字段叫分數,另一個字段叫組名,有 4 個組,查出每一個組的第一名,sql 怎麼寫
select group_name,max(score) from table group by group_name order by group_namejava
5.數據庫引擎有哪些(myIsam,InnoDB 等等)mysql
- myIsam 和 Inno DB的區別(InnoDB 支持事務,外鍵,崩潰後恢復,InnoDB 行級鎖,myIsam 表級鎖)
- myIsam 的優勢(博主當時只記住了 InnoDB 的優勢,沒想到面試官問到了 myIsam 的優勢,速度快,磁盤空間佔用少)
- Spring 的兩個特性(IOC 和 aop,這兩個特性用到了哪些設計模式)
- java 的容器,集合(老生常談了,list, set, map 等等,另外說一下有哪些實現類)
- hashmap 的實現(數組+鏈表+紅黑樹)
- put 一個 key 和 value,怎麼肯定數組的下標,若是有兩個key put到同個位置,怎麼作?(根據key計算hash值,根據hash肯定下標等等)
- HashMap 是線程安全的嗎?有哪些實現?(不是,線程安全的能夠用hashtable,concurrentHashMap等等)
- concurrentHashMap 是怎麼實現線程安全的?具體的實現?兩個線程同時 put 兩個 key 是怎麼作的?
(1.7數組+鏈表,分段鎖,1.8數組+鏈表+紅黑樹,cas+synchronized)linux
- java 集合的排序(stream 中的 sort),內部是怎麼實現的?原理是什麼?瞭解過哪些排序?
- java 集合的分組(groupingby (對象::屬性))
- 函數式方法(接口),什麼條件下才能用?這種適用於全部的嗎?仍是說有必定的限制?
- 後臺的請求比較慢,通常是什麼緣由形成的?後臺請求直接卡了,怎麼排查,日誌沒報錯呢?(查一下慢sql,須要大量運算)
- 怎麼查鎖日誌,線程日誌?(這個不知道)
19.常見線程池,這些都是什麼樣的線程池?nginx
(newCachedThreadPool,程序員
newFixedThreadPool,面試
newScheduledThreadPool,redis
newSingleThreadExecutor,算法
如今有6種線程池了,沒記那麼多)spring
20.java 鎖,並簡單說一下鎖,類名,關鍵字,鎖的實現等等(ReentrantLock,迷迷糊糊說了一些,畢竟記得很少)
21.谷歌 guava 緩存用過嗎?(沒用過)
22.項目有哪些難的實現,你是怎麼作的?(根據本身的狀況去回答)
2、親鄰科技(甲方)
過去面試的時候,是星期五晚上8點多了
一面:hr(不到10分鐘)
簡單自我介紹,對技術,薪資有要求什麼的,跳槽緣由,評價本身,公司加班挺多的,問能不能接受
二面:技術(不到20分鐘,答的有點差)
- 對稱加密和非對稱加密的區別
- 跨域腳本攻擊(還有好幾個沒聽過)
- 數據庫隔離級別(讀未提交,讀已提交,可重複讀,串行化)
- 不可重複讀和幻讀是什麼?(a重複讀同個數據,b修改數據,a再次讀,就是不可重複讀;a修改某些數據,b從中插入一條數據,a會發現還有一條數據沒修改,那麼就是幻讀)
- 死鎖是什麼?產生緣由?怎麼解決(競爭同一資源,四個條件,破壞四個條件,這一塊沒答好)
- 服務器 cpu 百分百,怎麼排查(ps 查看進程,答的不是很好,畢竟這方面沒研究。雖然公司也遇到了 cpu 百分百的狀況,可是解決辦法是把須要大量運算的 mrp 功能給禁掉,後面加內存,加服務器。這一塊我可不敢實話實說)
- nginx 能夠用來作什麼(負載均衡,反向代理,面試官還繼續問還有呢,我不知道什麼了,我說能夠攔截 ip 等等)
- cas 是什麼?(樂觀鎖的一種實現,會形成aba問題,加版本號或者時間戳)
- redis 持久化機制,rdb 和 aof 的優缺點(全量數據備份,安全性低,備份間隔時間長;增量數據備份,數據安全,文件大)
- spring 異步註解(沒用過)
- 講一講類加載機制
- 內存泄露和內存溢出的區別
- 還問了其餘一些題目,不太記得了
- 講一講項目,你是怎麼作的
3、金蝶軟件(甲方,面試了40分鐘)
- 問的項目問題比較多,怎麼設計功能的,數據庫是怎麼設計的
- 左鏈接,右鏈接,內鏈接的區別
- mysql 執行計劃,有哪些看的
- springmvc 執行過程,從前端到後臺,再返回前端的過程
- 權限驗證,驗權怎麼作
- 數據庫的鎖(樂觀鎖,悲觀鎖,獨佔鎖,共享鎖)
- select, update, delete 對應哪些鎖
- java 集合體系(list,set,map)
- arraylist 刪除元素有哪些注意的地方
- arraylist 是線程安全的嗎(不是,線程安全:vector,copyonwritearraylist)
- 何時用 arraylist,linkedList(頻繁增刪用 linkedList)
- 深拷貝和淺拷貝
- 值傳遞和引用傳遞
- 多線程,線程池
- 資源同步是怎麼作的?
- synchronized 能夠修飾靜態類嗎
- lock 和 synchronized 的區別?用的話,你會怎麼選
- 平時怎麼學習的(看教程,看博客)
- 本身的規劃是什麼?(規劃學微服務,分佈式等等)
- 技術方面的優點是什麼
- 代碼怎麼優化,重構(單一職責,共用等等)
- 本身的網站是怎麼進行性能優化的?(加 cdn,加 redis)
- 你有什麼想問個人?大家那邊用到的技術是什麼?面試官:技術桟是封裝框架,沒有前端,用拖拉組件什麼的,微服務是 dubbo,數據庫是 oracle,側重點是業務,技術次要。
最後面試官說:有四輪面試,這邊面試完跟總監商量一下(剩下3輪都不是技術面)
4、平安銀行(外包,面試了40分鐘,由於有事,最後中斷了)
- spirngboot 啓動原理(內嵌 tomcat....)
- 啓動的註解(springbootapplication)
- springboot 核心配置
- 配置文件的方式(yml, properties)
- springmvc 的工做流程
- springmvc 的組件
- @RequestMapping 的做用(攔截 url)
- spring 經常使用的模塊,核心
- 說一說 ioc 和 aop
- spring 經常使用的注入方式
- spring 的 bean 有沒有了解
- spring 事務的實現
- spring 的隔離
- 數據庫的隔離級別(讀未提交,讀已提交,可重複讀,串行化)
- 隔離級別的影響(髒讀,不可重複讀,幻讀)
- 原子性,持久性(不可分割,保存到數據庫)
- char 和 varchar 的區別(字節大小,''和"")面試官繼續問還有沒有。。。
- left join 和 right join 的區別
- sql 你是怎麼調優的
- sql 執行計劃(explain)
- sql 的行鎖和表鎖,優點(鎖一行和鎖整個表)
- 樂觀鎖,悲觀鎖(版本號,時間戳)
- mysql 的引擎,區別(innodb 支持外鍵,行鎖,支持崩潰恢復,myisam 支持全文索引)
- select count(*) from table,數據是怎麼執行的,會形成全表掃描嗎(innodb,不支持全文索引,因此在innodb會形成全表掃描)
- float 和 double 內存佔多少字節
- 在自增表,有6條數據,刪了兩條數據,再增長一條數據,這條數據的id是多少(innodb是7,myisam是5,結果說反了)
- redis使用場景,和 memcache 的區別
- redis 的持久化(rdb 和 aof,全量,增量)
- 瞭解 redis 分佈式,有多少個節點,以及一些命令
- nginx應用場景(先後端分離,負載均衡)
- 負載均衡的策略(輪詢,權重等等)
- 先後端是怎麼交互的
- 正向代理和反向代理
- swagger 有了解嗎(接口文檔)
- == 和 equals 的區別
- 堆棧有了解嗎
- stringbuilder 和 stringbuffer 的區別(線程安全,效率)
- io 流(reader和writer,inputstream和outputstream)
- fileinputstream 和 bufferinputstream 的區別
- 集合(list,set,map)
- 線程安全的集合有哪些(vector,copyonwritearraylist,hashtable, concurrenthashmap)
- hashmap的實現過程(1.7頭插,1.8尾插)
- hashset 和 linkedhashset(底層hashmap,有序,底層 linkedhashmap,無序)
- 深拷貝,淺拷貝
「問的時間差很少40分鐘了,由於還要工做,就打斷面試了,結果晚上就來了第二輪面試」
平安銀行第二輪面試(面試了26分鐘)
- mysql 查詢,有不少關聯的表,怎麼優化(表加字段,適當冗餘,少關聯表,不要用*,in,null,or, %等等)
- 索引失效的狀況(in,null,or, %等等)
- 經常使用的集合類(list,set,map及實現類)
- 線程安全的容器有哪些(vector,copyonwritearraylist,hashtable,concurrenthashmap)
- concurrenthashmap 是怎麼保證線程安全的(1.7用分段鎖,16個都上鎖,1.8用cas+syn)
- hashmap 的數據結構(1.7數組+鏈表,多線程會造成一個環,cpu會飆升100%,1.8數組+鏈表+紅黑樹)
- 什麼狀況下會轉成紅黑樹(key,hash,數組大於64,鏈表大於8,轉成紅黑樹)
- 重寫了 equals,還須要重寫 hashcode 方法嗎(由於根據 key,hash 計算出來有可能會衝突,因此要重寫hashcode)
- 鏈表是雙向鏈表嗎
- redis的數據結構(string,set,sort set,list,hash,bitmap等等)
- redis 分佈式鎖
- b+ 樹瞭解嗎(mysql索引)
- 緩存擊穿(緩存失效,在緩存找不到,在數據庫有數據)
- 解決辦法(設置緩存失效時間隨機,錯開時間,或者給個標記)(實際上是設置熱點數據永遠不過時或者加互斥鎖等等)
- threadlocal有了解嗎(發音沒聽清,聽成什麼logo了,聽了三遍沒聽出來,後面才反應他要說什麼)
- 項目中遇到的困難(mrp功能)
- 服務器 cpu 上升到90以上的時候,還能夠用多線程嗎?
- 最近有研究什麼新的技術嗎?(在學習微服務)
- 微服務相關組件,一些沒聽過(說了一下這些是幹嗎的)
- zookeeper有了解嗎(分佈式)
- 內存泄露有哪些狀況?
- 從專業角度+性格,評價本身
- 你但願的項目是什麼樣的?(技術桟,技術氛圍)
- linux經常使用命令(ls,cd,pwd,chmod,vi,whereis,find二進制文件)
面試官:到崗時間比較急,技術棧是 springboot+dubbo,微服務集羣,zookeeper+redis+mysql 等等
「面試評價:沒什麼大問題,但願快點入職」
結尾
jvm,微服務和分佈式等等的沒有記錄了,本身沒接觸過,聽到了也忘記,沒有及時寫上去。還有一些面試,沒有去記錄了,整理和記錄面試挺費時間的,上面的主要記錄技術面試。有些終面,面了 40 分鐘,問生活細節,有什麼愛好,以前寫的博客,還記得嗎?xx篇,你還記得寫了什麼內容嗎?你是哪裏人,未來是否是還待在深圳?暈死,一直問,問了 40 多分鐘,若是我不打斷,可能會一個小時以上。像這樣的流水帳面試,就沒有寫到上面去了。
最後比較幸運,拿下幾個 offer,面試題仍是得多刷題,避免答不出來,另外收到offer的機會纔會多。
最後:
關於以上面試題的答案以及知識點:
因爲篇幅問題,只放這麼多的面試資料,須要的可後臺私信我【電子書】,來領取!
JVM
阿里面試必問JVM!咱們全部的程序都運行在Java虛擬機上,只有對Java虛擬機底層原理進行深刻的學習,全面理解JVM的運行機制、運行時數據區、垃圾收集算法等,還有事務及Spring MVC整個流程、AQS等。
知識點:
1.基本概念和運行過程
2.1線程
2.2 JVM內存區域
2.3 JVM 運行時內存
2.4 垃圾回收與算法
2.5 JAVA 四種引用類型
2.6 分代收集算法VS 分區收集算法
2.7 GC 垃圾收集器
2.8 JAVA IO/NIO
2.9.JVM 類加載機制
JVM面試題
- JVM 內存分哪幾個區,每一個區的做用是什麼?
- 如何判斷一個對象是否存活?(或者 GC 對象的斷定方法)
- 簡述 Java 垃圾回收機制?
- Java 中垃圾收集的方法有哪些?
- Java 內存模型
- Java 類加載過程?
- 簡述 Java 類加載機制?
- 類加載器雙親委派模型機制?
- 什麼是類加載器,類加載器有哪些?
- 簡述 Java 內存分配與回收策略以及 Minor GC 和Major GC?
MySQL
MySQL的原理、底層、優化已經成爲一個合格的程序員必備技能。開發人員對MySQL的掌握,越深刻,你能作的事情就越多。
知識點:
MySQL存儲引擎
共享鎖及排它鎖
MySQL的分區
MySQL事務及隔離性級別
執行計劃
Btree與B+tree索引
Sql慢查詢
Sql優化
MySQL面試題
- 請解釋關係型數據庫概念及主要特色?
- 請說出關係型數據庫的典型產品、特色及應用場景?
- 請詳細描述 SQL 語句分類及對應表明性關鍵字。
- 什麼是 MySQL 多實例,如何配置 MySQL 多實例?
- 如何增強 MySQL 安全,請給出可行的具體措施?
- 誤操做執行了一個 drop 庫 SQL 語句,如何完整恢復?
- 詳述 MySQL 主從複製原理及配置主從的完整步驟。
- MySQL 如何實現雙向互爲主從複製,並說明應用場景?
- MySQL 如何實現級聯同步,並說明應用場景?
- MySQL 主從複製故障如何解決?
我把學習資料都整理在網盤了,獲取方式:點擊連接《Java面試BAT通關手冊》,覆蓋了Java核心技術、JVM、Java併發、SSM、微服務、數據庫、數據結構等等。