想要靠外包刷題,結(jié)果卻大跌眼鏡

最開始是打算面試外包公司刷經(jīng)驗(yàn),等經(jīng)驗(yàn)差不多了,再去甲方嘗試,可惜不太順利。
一、邁思(面試了30分鐘)
自我介紹
左連接(a 表左連接 b 表,a 表全部數(shù)據(jù)出來,b 表沒有的數(shù)據(jù)為空)
a 表左連接 b 表,b 表左連接 c 表,c 表左連接 a 表,這樣的數(shù)據(jù)是什么數(shù)據(jù)(博主當(dāng)時(shí)有點(diǎn)懵,回答全連接,全部數(shù)據(jù)會出來。。。)
sql:一個(gè)班的學(xué)生有兩個(gè)字段,一個(gè)字段叫分?jǐn)?shù),另外一個(gè)字段叫組名,有 4 個(gè)組,查出每個(gè)組的第一名,sql 怎么寫
select group_name,max(score) from table ?group by group_name order by group_name
5.數(shù)據(jù)庫引擎有哪些(myIsam,InnoDB 等等)
myIsam 和 Inno DB的區(qū)別(InnoDB 支持事務(wù),外鍵,崩潰后恢復(fù),InnoDB 行級鎖,myIsam 表級鎖)
myIsam 的優(yōu)點(diǎn)(博主當(dāng)時(shí)只記住了 InnoDB 的優(yōu)點(diǎn),沒想到面試官問到了 myIsam 的優(yōu)點(diǎn),速度快,磁盤空間占用少)
Spring 的兩個(gè)特性(IOC 和 aop,這兩個(gè)特性用到了哪些設(shè)計(jì)模式)
java 的容器,集合(老生常談了,list, set, map 等等,另外說一下有哪些實(shí)現(xiàn)類)
hashmap 的實(shí)現(xiàn)(數(shù)組+鏈表+紅黑樹)

put 一個(gè) key 和 value,怎么確定數(shù)組的下標(biāo),如果有兩個(gè)key put到同個(gè)位置,怎么做?(根據(jù)key計(jì)算hash值,根據(jù)hash確定下標(biāo)等等)
HashMap 是線程安全的嗎?有哪些實(shí)現(xiàn)?(不是,線程安全的可以用hashtable,concurrentHashMap等等)
concurrentHashMap 是怎么實(shí)現(xiàn)線程安全的?具體的實(shí)現(xiàn)?兩個(gè)線程同時(shí) put 兩個(gè) key 是怎么做的?
(1.7數(shù)組+鏈表,分段鎖,1.8數(shù)組+鏈表+紅黑樹,cas+synchronized)
java 集合的排序(stream 中的 sort),內(nèi)部是怎么實(shí)現(xiàn)的?原理是什么?了解過哪些排序?
(Comparable和Comparator ?參考鏈接)
java 集合的分組(groupingby (對象::屬性))
函數(shù)式方法(接口),什么條件下才能用?這種適用于所有的嗎?還是說有一定的限制?
后臺的請求比較慢,一般是什么原因造成的?后臺請求直接卡了,怎么排查,日志沒報(bào)錯(cuò)呢?(查一下慢sql,需要大量運(yùn)算)
怎么查鎖日志,線程日志?(這個(gè)不知道)
常見線程池,這些都是什么樣的線程池?(newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor,現(xiàn)在有6種線程池了,沒記那么多)
java 鎖,并簡單說一下鎖,類名,關(guān)鍵字,鎖的實(shí)現(xiàn)等等(ReentrantLock,迷迷糊糊說了一些,畢竟記得不多)
谷歌 guava 緩存用過嗎?(沒用過)
項(xiàng)目有哪些難的實(shí)現(xiàn),你是怎么做的?(根據(jù)自己的情況去回答)
二、親鄰科技(甲方)
過去面試的時(shí)候,是星期五晚上8點(diǎn)多了
一面:hr(不到10分鐘)
簡單自我介紹,對技術(shù),薪資有要求什么的,跳槽原因,評價(jià)自己,公司加班挺多的,問能不能接受
二面:技術(shù)(不到20分鐘,答的有點(diǎn)差)
對稱加密和非對稱加密的區(qū)別
跨域腳本攻擊(還有好幾個(gè)沒聽過)
數(shù)據(jù)庫隔離級別(讀未提交,讀已提交,可重復(fù)讀,串行化)
不可重復(fù)讀和幻讀是什么?(a重復(fù)讀同個(gè)數(shù)據(jù),b修改數(shù)據(jù),a再次讀,就是不可重復(fù)讀;a修改某些數(shù)據(jù),b從中插入一條數(shù)據(jù),a會發(fā)現(xiàn)還有一條數(shù)據(jù)沒修改,那么就是幻讀)
死鎖是什么?產(chǎn)生原因?怎么解決(競爭同一資源,四個(gè)條件,破壞四個(gè)條件,這一塊沒答好)
服務(wù)器 cpu 百分百,怎么排查(ps 查看進(jìn)程,答的不是很好,畢竟這方面沒研究。雖然公司也遇到了 cpu 百分百的情況,但是解決辦法是把需要大量運(yùn)算的 mrp 功能給禁掉,后面加內(nèi)存,加服務(wù)器。這一塊我可不敢實(shí)話實(shí)說)
nginx 可以用來做什么(負(fù)載均衡,反向代理,面試官還繼續(xù)問還有呢,我不知道什么了,我說可以攔截 ip 等等)
cas 是什么?(樂觀鎖的一種實(shí)現(xiàn),會造成aba問題,加版本號或者時(shí)間戳)
redis 持久化機(jī)制,rdb 和 aof 的優(yōu)缺點(diǎn)(全量數(shù)據(jù)備份,安全性低,備份間隔時(shí)間長;增量數(shù)據(jù)備份,數(shù)據(jù)安全,文件大)
spring 異步注解(沒用過)
講一講類加載機(jī)制
內(nèi)存泄露和內(nèi)存溢出的區(qū)別
還問了其他一些題目,不太記得了
講一講項(xiàng)目,你是怎么做的
三、奧薩醫(yī)藥(甲方,面試了35分鐘左右)
「看到一個(gè)小姐姐,問路,好漂亮」
進(jìn)去之后,填資料,填完資料,就問問題
mysql 的常用引擎,區(qū)別(InnoDB:支持事務(wù),外鍵,行鎖,支持崩潰后恢復(fù),面試官還問為什么能恢復(fù)。Myisam:表鎖,全文索引)
sql 有哪些優(yōu)化,常用索引(查詢哪些字段,不要用*, null, like后面的"% 等等)
sql 語句執(zhí)行的過程是怎么樣的?怎么分析 explain
假如有 100w 數(shù)據(jù),我想要第 60 萬行之后的數(shù)據(jù),怎么優(yōu)化(用limit,加索引,面試官太變態(tài)了,問加了這些還很慢,怎么辦)
redis 是什么,為什么比 mongodb 熱門?(非關(guān)系型數(shù)據(jù)庫,基于內(nèi)存等等,為什么熱門,這個(gè)我就說不知道了,因?yàn)椴恢?mongodb)
什么是非關(guān)系型數(shù)據(jù)庫,與關(guān)系型數(shù)據(jù)庫的區(qū)別?(沒回答好)
除了基于內(nèi)存,讀取速度快,還有哪些原因讓 redis 快?(沒回答好)
常用的數(shù)據(jù)類型,應(yīng)用場景(String,List,Set,Zset,Hash,面試官還問為什么,額,簡直是抽絲剝繭呢)
持久化機(jī)制,rdb 和 aof 的區(qū)別,你會怎么選擇哪種機(jī)制(全量和增量,備份時(shí)間長短,數(shù)據(jù)安全等等,現(xiàn)在有混合機(jī)制)
淘汰策略有哪些(答到過期策略那里去了,面試官提醒了)

redis 為什么可以對 String 進(jìn)行自增自減運(yùn)算(這個(gè)不知道)
redis 怎么進(jìn)行優(yōu)化?(不知道)
java 常用的集合有哪些?(list,set,map,實(shí)現(xiàn)類)
arrayList 和 linkedList 的區(qū)別(數(shù)據(jù)結(jié)構(gòu),讀取和增刪速度,線程安全copyonwriteArrayList)
我想要插入幾十萬數(shù)據(jù)到 arrayList,有什么優(yōu)化方法?(這個(gè)還真的不知道了)
hashmap 底層結(jié)構(gòu),put的過程?為什么要加紅黑數(shù)?結(jié)構(gòu)全部用紅黑樹可以嗎?(數(shù)組+鏈表+紅黑樹,根據(jù) key 計(jì)算 hash,根據(jù) hash 計(jì)算下標(biāo),下標(biāo)為 null 就賦值,不為 null,就遍歷判斷 hashcode 相等等等,1.7用頭插,1.8用尾插,加紅黑樹是穩(wěn)定,效率。數(shù)組查詢時(shí)間復(fù)雜度o(1),鏈表增刪時(shí)間復(fù)制度o(1),紅黑樹o(log n),效率沒有前面兩者高,所以,不能全部用紅黑樹)
concurrenthashmap 的結(jié)構(gòu)(1.7分段鎖,1.8cas+synchronize)
synchronized和 lock 的區(qū)別
hashtable 和 concurrenthashmap 的區(qū)別(結(jié)構(gòu)不同,hashtable是鎖整個(gè)對象和方法)
有哪些 java 的鎖?實(shí)現(xiàn)類?cas 是什么?aqs 是什么?(樂觀悲觀,公平非公平,只說了 ReentrantLock,面試官接著問還有呢?cas,樂觀鎖的實(shí)現(xiàn),會造成 aba 問題,加版本號或者時(shí)間戳。aqs 是鎖框架)

線程池怎么使用,常用的參數(shù)?(使用 ThreadPoolExcutor,核心線程數(shù),最大線程數(shù),時(shí)間,隊(duì)列,線程工廠,拒絕策略)
假如有 50 個(gè)任務(wù)去執(zhí)行,5 個(gè)核心線程,10 個(gè)最大線程數(shù),10 個(gè)任務(wù)隊(duì)列,流程是怎么樣的,狀態(tài)是怎么樣的?多余的任務(wù)是怎么用拒絕策略的(創(chuàng)建 5 個(gè)核心線程,10 個(gè)放隊(duì)列,隊(duì)列滿了,再創(chuàng)建 10 個(gè)非核心線程,剩余 25 個(gè)根據(jù)拒絕策略來決定,默認(rèn)報(bào)異常,其余三種:要么忽略,要么放棄最早的線程,要么用該線程去執(zhí)行)(后來才知道回答錯(cuò)了,10 個(gè)最大線程數(shù),5個(gè)核心 + 5個(gè)非核心,剩下的 30 個(gè)走拒絕策略)
面試官給我的評價(jià):面試的都能答出來,這一點(diǎn)很不錯(cuò),但了解的不深,雖然工作上用不到,但是面試就是這樣造火箭的。面試不會差,但也不優(yōu)秀,處于待定狀態(tài)。
四、金蝶軟件(甲方,面試了40分鐘)
問的項(xiàng)目問題比較多,怎么設(shè)計(jì)功能的,數(shù)據(jù)庫是怎么設(shè)計(jì)的
左連接,右連接,內(nèi)連接的區(qū)別
mysql 執(zhí)行計(jì)劃,有哪些看的
springmvc 執(zhí)行過程,從前端到后臺,再返回前端的過程
權(quán)限驗(yàn)證,驗(yàn)權(quán)怎么做
數(shù)據(jù)庫的鎖(樂觀鎖,悲觀鎖,獨(dú)占鎖,共享鎖)
select, update, delete 對應(yīng)哪些鎖
java 集合體系(list,set,map)
arraylist 刪除元素有哪些注意的地方
arraylist 是線程安全的嗎(不是,線程安全:vector,copyonwritearraylist)

什么時(shí)候用 arraylist,linkedList(頻繁增刪用 linkedList)
深拷貝和淺拷貝
值傳遞和引用傳遞
多線程,線程池
資源同步是怎么做的?
synchronized 可以修飾靜態(tài)類嗎
lock 和 synchronized 的區(qū)別?用的話,你會怎么選
平時(shí)怎么學(xué)習(xí)的(看教程,看博客)
自己的規(guī)劃是什么?(規(guī)劃學(xué)微服務(wù),分布式等等)
技術(shù)方面的優(yōu)勢是什么

代碼怎么優(yōu)化,重構(gòu)(單一職責(zé),共用等等)
自己的網(wǎng)站是怎么進(jìn)行性能優(yōu)化的?(加 cdn,加 redis)
你有什么想問我的?你們那邊用到的技術(shù)是什么?面試官:技術(shù)桟是封裝框架,沒有前端,用拖拉組件什么的,微服務(wù)是 dubbo,數(shù)據(jù)庫是 oracle,側(cè)重點(diǎn)是業(yè)務(wù),技術(shù)次要。
最后面試官說:有四輪面試,這邊面試完跟總監(jiān)商量一下(剩下3輪都不是技術(shù)面)
五、平安銀行(外包,面試了40分鐘,因?yàn)橛惺?,最后中斷了?/span>
spirngboot 啟動原理(內(nèi)嵌 tomcat....)
啟動的注解(springbootapplication)
springboot 核心配置
配置文件的方式(yml, properties)
springmvc 的工作流程
springmvc 的組件
@RequestMapping 的作用(攔截 url)
spring 常用的模塊,核心
說一說 ioc 和 aop
spring 常用的注入方式

spring 的 bean 有沒有了解
spring 事務(wù)的實(shí)現(xiàn)
spring 的隔離
數(shù)據(jù)庫的隔離級別(讀未提交,讀已提交,可重復(fù)讀,串行化)
隔離級別的影響(臟讀,不可重復(fù)讀,幻讀)
原子性,持久性(不可分割,保存到數(shù)據(jù)庫)
char 和 varchar 的區(qū)別(字節(jié)大小,''和"")面試官繼續(xù)問還有沒有。。。
left join 和 right join 的區(qū)別
sql 你是怎么調(diào)優(yōu)的
sql 執(zhí)行計(jì)劃(explain)

sql 的行鎖和表鎖,優(yōu)勢(鎖一行和鎖整個(gè)表)
樂觀鎖,悲觀鎖(版本號,時(shí)間戳)
mysql 的引擎,區(qū)別(innodb 支持外鍵,行鎖,支持奔潰恢復(fù),myisam 支持全文索引)
select count(*) from table,數(shù)據(jù)是怎么執(zhí)行的,會造成全表掃描嗎(innodb,不支持全文索引,所以在innodb會造成全表掃描)
float 和 double 內(nèi)存占多少字節(jié)
在自增表,有6條數(shù)據(jù),刪了兩條數(shù)據(jù),再增加一條數(shù)據(jù),這條數(shù)據(jù)的id是多少(innodb是7,myisam是5,結(jié)果說反了)
redis使用場景,和 memcache 的區(qū)別
redis 的持久化(rdb 和 aof,全量,增量)
了解 redis 分布式,有多少個(gè)節(jié)點(diǎn),以及一些命令
nginx應(yīng)用場景(前后端分離,負(fù)載均衡)

負(fù)載均衡的策略(輪詢,權(quán)重等等)
前后端是怎么交互的
正向代理和反向代理
swagger 有了解嗎(接口文檔)
== 和 equals 的區(qū)別
堆棧有了解嗎
stringbuilder 和 stringbuffer 的區(qū)別(線程安全,效率)
io 流(reader和writer,inputstream和outputstream)
fileinputstream 和 bufferinputstream 的區(qū)別
集合(list,set,map)
線程安全的集合有哪些(vector,copyonwritearraylist,hashtable, concurrenthashmap)
hashmap的實(shí)現(xiàn)過程(1.7頭插,1.8尾插)
hashset 和 linkedhashset(底層hashmap,有序,底層 linkedhashmap,無序)
深拷貝,淺拷貝
「問的時(shí)間差不多40分鐘了,因?yàn)檫€要工作,就打斷面試了,結(jié)果晚上就來了第二輪面試」

平安銀行第二輪面試(面試了26分鐘)
mysql 查詢,有很多關(guān)聯(lián)的表,怎么優(yōu)化(表加字段,適當(dāng)冗余,少關(guān)聯(lián)表,不要用*,in,null,or, %等等)
索引失效的情況(in,null,or, %等等)
常用的集合類(list,set,map及實(shí)現(xiàn)類)
線程安全的容器有哪些(vector,copyonwritearraylist,hashtable,concurrenthashmap)
concurrenthashmap 是怎么保證線程安全的(1.7用分段鎖,16個(gè)都上鎖,1.8用cas+syn)
hashmap 的數(shù)據(jù)結(jié)構(gòu)(1.7數(shù)組+鏈表,多線程會形成一個(gè)環(huán),cpu會飆升100%,1.8數(shù)組+鏈表+紅黑樹)
什么情況下會轉(zhuǎn)成紅黑樹(key,hash,數(shù)組大于64,鏈表大于8,轉(zhuǎn)成紅黑樹)
重寫了 equals,還需要重寫 hashcode 方法嗎(因?yàn)楦鶕?jù) key,hash 計(jì)算出來有可能會沖突,所以要重寫hashcode)
鏈表是雙向鏈表嗎
redis的數(shù)據(jù)結(jié)構(gòu)(string,set,sort set,list,hash,bitmap等等)

redis 分布式鎖
b+ 樹了解嗎(mysql索引)
緩存擊穿(緩存失效,在緩存找不到,在數(shù)據(jù)庫有數(shù)據(jù))
解決辦法(設(shè)置緩存失效時(shí)間隨機(jī),錯(cuò)開時(shí)間,或者給個(gè)標(biāo)記)(其實(shí)是設(shè)置熱點(diǎn)數(shù)據(jù)永遠(yuǎn)不過期或者加互斥鎖等等)
threadlocal有了解嗎(發(fā)音沒聽清,聽成什么logo了,聽了三遍沒聽出來,后面才反應(yīng)他要說什么)
項(xiàng)目中遇到的困難(mrp功能)
服務(wù)器 cpu 上升到90以上的時(shí)候,還可以用多線程嗎?
最近有研究什么新的技術(shù)嗎?(在學(xué)習(xí)微服務(wù))
微服務(wù)相關(guān)組件,一些沒聽過(說了一下這些是干嘛的)
zookeeper有了解嗎(分布式)

內(nèi)存泄露有哪些情況?
從專業(yè)角度+性格,評價(jià)自己
你希望的項(xiàng)目是什么樣的?(技術(shù)桟,技術(shù)氛圍)
linux常用命令(ls,cd,pwd,chmod,vi,whereis,find二進(jìn)制文件)
面試官:到崗時(shí)間比較急,技術(shù)棧是 springboot+dubbo,微服務(wù)集群,zookeeper+redis+mysql 等等
「面試評價(jià):沒什么大問題,希望快點(diǎn)入職」
結(jié)尾
jvm,微服務(wù)和分布式等等的沒有記錄了,自己沒接觸過,聽到了也忘記,沒有及時(shí)寫上去。還有一些面試,沒有去記錄了,整理和記錄面試挺費(fèi)時(shí)間的,上面的主要記錄技術(shù)面試。有些終面,面了 40 分鐘,問生活細(xì)節(jié),有什么愛好,之前寫的博客,還記得嗎?xx篇,你還記得寫了什么內(nèi)容嗎?你是哪里人,將來是不是還待在深圳?暈死,一直問,問了 40 多分鐘,如果我不打斷,可能會一個(gè)小時(shí)以上。像這樣的流水賬面試,就沒有寫到上面去了。
最后比較幸運(yùn),拿下幾個(gè) offer,面試題還是得多刷題,避免答不出來,另外收到offer的機(jī)會才會多。
總結(jié)
待的公司,比較安逸穩(wěn)定,也算是個(gè)溫室,業(yè)務(wù)比較復(fù)雜(ERP 系統(tǒng)),項(xiàng)目架構(gòu)比較簡單,單體項(xiàng)目,去年說加緩存的一直沒加,單表數(shù)據(jù)最多是上千,現(xiàn)在是 260 多張表。目前有 20 個(gè)客戶,cpu 飄升到百分之 90,之后,服務(wù)器奔潰,好幾次都這樣。后來我們 CTO 的解決辦法是把功能給禁掉(MRP 運(yùn)算),后來發(fā)現(xiàn)是報(bào)表問題,oom 錯(cuò)誤,換了報(bào)表工具。過了一段時(shí)間,加了內(nèi)存,加服務(wù)器。(微服務(wù),分布式,緩存,集群,消息隊(duì)列都沒用到,也學(xué)不到),一直做一些復(fù)雜的業(yè)務(wù)功能,寫業(yè)務(wù)代碼。還是早一點(diǎn)離開技術(shù)得不到提升的地方,雖然他一直給我洗腦,說會那么多技術(shù)有什么用,你業(yè)務(wù)不會,代碼不會寫,會再多技術(shù)也是等于零。但我心里一直否認(rèn),畢竟我是搞技術(shù)的,懂基本業(yè)務(wù)可以,討論業(yè)務(wù),需求可以交給項(xiàng)目經(jīng)理什么的,最后安排我做什么就行了。除非走業(yè)務(wù)路線,走管理,懂技術(shù)懂業(yè)務(wù)。像我這種學(xué)五渣,不適合走業(yè)務(wù)。

推薦閱讀:
喜歡我可以給我設(shè)為星標(biāo)哦


