前言
在六月份的時候,水友就跟我說想跳槽了,一直待在傳統公司不是辦法,當時準備了兩個月終于拿到了華為的Offer,一起感受下大佬的面試經歷吧!

背景
211本,985渣碩,畢業之后一直在傳統企業,從6月底開始硬著頭皮看題 ,然后從8月底開始準備秋招,到目前識訓了幾個offer,準備就簽華為了,
京東
京東是第一個面試的公司,雖然過了,但是京東那成海了,估計撈不起來了,
一面(電話面試40min)
-
問本科做的什么,有沒有學過計算機相關課程
-
Spring是怎么識別http請求找到對應的controller的
-
物件在堆記憶體里面會不會有移動
-
Integer能不能用==判斷相等(-128到127有快取)
-
重寫equels為什么要重寫hashcode(回答因為有一些需要用到hashcode的場景,比如set,會先判斷hashcode是否相同,再通過equals來判斷)
-
JVM常見的垃圾回收演算法以及都有什么缺點
-
new一個object物件,然后再賦值給一個靜態變數,然后問這個程序在JVM記憶體是什么個程序(回答會把創建的實體物件放到堆記憶體區域,然后再把指向物件的記憶體地址賦值給符號參考,讓這個符號參考指向對應的堆記憶體區域)
-
這個物件的堆記憶體地址會不會發生改變(會,因為垃圾回識訓對物件進行轉移,比如復制法和標記整理)
-
輸入URL到瀏覽器,整個程序是怎么樣的
-
Spring是怎么處理HTTP請求的
前置分發器 DispatcherServlet 接收到 HTTP 請求之后,將查找適當的控制器 Controller 來處理請求,它通過決議 HTTP 請求的 URL 獲得 URI,再根據該 URI 從處理器映射 HandlerMapping 當中獲得該請求對應的處理器 Handler 和處理器攔截器 HandlerInterceptor,最后以 HandlerExecutionChain 形式回傳,
前置分發器 DispatcherServlet 根據獲得的處理器 Handler 選擇合適的配接器 HandlerAdapter,如果成功獲得配接器 HandlerAdapter,在呼叫處理器 Handler 之前其攔截器的方法 preHandler() 優先執行,
方法 preHandler() 提取 HTTP 請求中的資料填充到處理器 Handler 的入參當中,然后開始呼叫處理器 Handler(即控制器 Controller)相關方法,
控制器 Controller 執行完成之后,向前置分發器 DispatcherServlet 回傳一個模型與視圖名物件 ModelAndView ,
前置分發器 DispatchServlet 根據模型與視圖名物件 ModelAndView 選擇適合的視圖決議器 ViewResolver,前提該視圖決議器必須已經注冊至 Spring IOC 容器當中,
視圖決議器 ViewResolver 將根據 ModelAndView 里面指定的視圖名稱獲得特定的視圖 View,
前置分發器 DispatchServlet 將模型資料填充進視圖當中,然后將渲染結果回傳給客戶端,
-
-
HTTP報文的格式是怎么樣的(請求行,請求頭,空行,請求體)
-
cookie存在http哪兒
-
cookie和session的區別
-
mysql里面的索引型別以及聯合索引的最左原則
-
了解過覆寫索引嗎(沒有了解)
如果一個索引包含(或覆寫)所有需要查詢的欄位的值,稱為‘覆寫索引’,即只需掃描索引而無須回表, 只掃描索引而無需回表的優點: 1.索引條目通常遠小于資料行大小,只需要讀取索引,則mysql會極大地減少資料訪問量, 2.因為索引是按照列值順序存盤的,所以對于IO密集的范圍查找會比隨機從磁盤讀取每一行資料的IO少很多, 3.一些存盤引擎如myisam在記憶體中只快取索引,資料則依賴于作業系統來快取,因此要訪問資料需要一次系統呼叫 4.innodb的聚簇索引,覆寫索引對innodb表特別有用,(innodb的二級索引在葉子節點中保存了行的主鍵值,所以如果二級主鍵能夠覆寫查詢,則可以避免對主鍵索引的二次查詢)
覆寫索引必須要存盤索引列的值,而哈希索引、空間索引和全文索引不存盤索引列的值,所以mysql只能用B-tree索引做覆寫索引,
-
事務是怎么實作的,
-
MVCC知道嗎
-
事務隔離級別,分別能解決什么問題
-
說一下什么是執行緒安全問題
-
sychronized和Lock的區別
-
synchronized使用的方法以及底層原理
同步方法是隱式的,一個同步方***在運行時常量池中的method_info結構體中存放ACC_SYNCHRONIZED識別符號,當一個執行緒訪問方法時,會去檢查是否存在ACC_SYNCHRONIZED標識,如果存在,則先要獲得對應的monitor鎖,然后執行方法,當方法執行結束(不管是正常return還是拋出例外)都會釋放對應的monitor鎖,如果此時有其他執行緒也想要訪問這個方法時,會因得不到monitor鎖而阻塞,當同步方法中拋出例外且方法內沒有捕獲,則在向外拋出時會先釋放已獲得的monitor鎖
-
lock的實作方法以及底層原理(CAS volatile然后AQS,然后獨占鎖和共享鎖)
-
執行緒池引數
-
場景題,核心執行緒數6,最大執行緒數10,佇列無界,然后說一下程序,(由于無界佇列,所以執行緒池中的執行緒數不會超過6,等待佇列里的任務只能等待執行緒處理完任務后再來執行,從頭說到飽和策略)
-
雙親委派模型了解嗎(巴拉巴拉)
-
怎么破壞(自己實作classloader,然后重寫classload方法,然后扯到Tomcat,然后問Tomcat為什么要這樣做,真想給自己一巴掌,話真多)
-
反問,問面試官是哪個部門的,都是做什么的,
-
問有offer嗎(沒有)
二面 35min
- 自我介紹
- 專案介紹,架構
- 執行緒池,有用到多執行緒嗎,執行緒怎么同步的
- mysql怎么建立索引
- 應用是單機部署還是多機部署
- redis部署模式(主從和哨兵)
- 目前的研究課題是什么
- 深度學習模型,CRNN CTPN是什么,整個框架
- 分布式有接觸過嗎
- 反問
電話突擊面 30min
1.問專案
2.問java基礎
3.問redis
4.sql洗掉重復資料,保留一個
delete from table where sex = (select sex from table group by sex having count(*) > 1)這是洗掉所有
Delete from table where id not in (select min(id) as id from table group by sex)
5.hashmap的原理
6.執行緒安全的本質,怎么保證執行緒安全
7.是什么時候學的java
8.反問
HR面
- 自我介紹
- 問學習,遇到未知領域怎么做,怎么學習的
- 有沒有物件
- 有什么offer,怎么選擇
- 職業規劃
- 反問
位元組
一面(70min)
- 自我介紹
- select和epoll的區別,水平觸發和垂直觸發
- so檔案存在記憶體的哪個地方
- 頁面置換演算法
- 虛擬記憶體,為什么虛擬記憶體會遠大于物理記憶體
- 行程的記憶體結構
- CPU超頻和超執行緒的區別,超頻有什么優勢,超執行緒呢(不知道)
- TCP中syn-flood怎么避免
- HTTP中協商壓縮
- websocket是怎么握手的
- ==和equals的區別
- hashmap和hashtable的區別,抽象類和介面的區別
- 常見的HASH演算法有哪些,一致性hash了解過嗎,為什么有虛節點,一致性hash的應用場景(分布式快取)
- 解決hash碰撞的方法,開放地址法和拉鏈法外還有嗎
- 垃圾回收,回收演算法,選一個回收器介紹
- 常見的排序都有哪些,歸并排序和堆排序的程序
- kafka都用來做什么,怎么保證系統的高可用性,怎么保證訊息不會丟失
- linux洗掉空行的命令
- linux如何查看cpu的核數,lscpu cat /proc/cpuinfo top
- redis常見資料結構
- redis的哨兵模式
- redis的過期資料洗掉,記憶體滿了怎么辦,默認是哪個策略(noeviction,滿了就報錯,禁止淘汰資料)
- 計算機網路中的擁塞控制
- 演算法題,根節點到葉子節點組成的數的和,
- 1G大小的檔案,記憶體1M,每行由單詞組成,找出頻數最高的100個,(歸并)最小堆
二面(80min)
- 自我介紹
- epoll沒處理完資料會怎么樣
- connect和accept對應的TCP狀態
- 容器的檔案系統
- 容器怎么實作CPU資源隔離的
- ConcurrenHashMap怎么擴容,實作機制
- hash沖突的解決辦法
- 死鎖產生的條件
-
互斥條件(不可剝奪條件,請求和保持條件,回圈等待條件)
- mysql事務的特性,隔離級別,能解決什么問題,頁鎖(頭會聽說)
- 演算法題:
-有序的二維陣列查找
-LRU+TTL
三面(40 min)
- 自我介紹,專案問題
- redus在專案中用在哪些方面,常用資料結構,zset怎么實作的,zset應用場景
- udp怎么實作可靠傳輸,怎么保證大檔案傳輸可靠,怎么實作斷點傳輸,
- nginx負載均衡演算法,一致性hash演算法,一致性hash帶權重怎么實作
- TCP中首部中的序號占多少個位元組,為什么要這樣用,
- 怎么學習技術的,都學過什么,
- 容器(docker)的網路模型
- 研究課題相關
- 反問
HR面(30min)
主要就問了有哪些offer,打算去哪,有沒有女朋啊和一些技術問題的概念解釋,
華為
一面(30min)
- 自我介紹
- .問專案,自我介紹里面的
- 3.演算法題:給定一個陣列,找出里面能構成三角形的最大周長構不成就回傳0
- 4.java設計模式(模板模式,代理模式,工廠模式,單例模式)
- 5.快排和歸并排序的區別(都是基于分治的思想,歸并排序是穩定的排序,O(nlogn),最壞情況也不變,快排是不穩定的排序時間復雜度O(nlogn),最壞情況是O(n2))
- 6.final用法都有什么作用(修飾變數,類,方法)
- 7.不可變物件
- 8.根據前序中序求后序
二面 (40min)
1.自我介紹
2.面向物件的設計原則,單一職責原則,開閉原則(怎么實作)
3.設計模式,你熟悉的(模板模式,代理模式,工廠模式,單例模式)
4.中間件(redis,kafka)
5.mysql陳述句,查詢一個欄位,用某個欄位排序,顯示某一頁多少個內容
6.演算法題:拼單詞,字符可以能拼出哪些單詞,
三面(45min)
1.自我介紹
2.深挖專案(微眾銀行的比賽,選擇標準,取得成績的標準,你是負責干什么的,團隊分工,團隊是否有分歧,怎么解決的,專案有沒有遇到什么問題,怎么解決的,如果你這個東西要商用的話,還需要怎么改進,有沒有考慮過安全問題,怎么判斷惡意訪問)
3.問了科研專案,有沒有遇到什么問題,遇到最困難的問題是什么,怎么解決的,有沒有看過原始碼,
4.反問(問了部門組成,以及連接與協同是做什么的(物聯網))
當時在位元組和京東直接猶豫了很久,最后還是選擇了華為
美團(涼經)
一面
1.自我介紹
2.聊專案
3.手撕mysql,查詢點播量最高的視頻
select viod_name from table order by times desc limit 0,1
4.mysql,查詢點播最高的用戶
select userid,count(*) as times from table group by userid order by times desc limit 0,1
5.redis的資料結構,redis的性能為什么好
6.redis的過期機制和記憶體淘汰策略
7.redis持久化的方式(沒答出來)
8.redis并發問題(沒答出來,兩個用戶同時修改一個key)
9.redis lru是怎么實作的,(通過鏈表實作的)
10.java的集合,concurrenthashmap怎么解決并發問題的,Hashtable怎么解決的,
11.常用的垃圾回收演算法(parralell)
12.cms怎么解決記憶體碎片的問題(full gc)
增大Xmx或者減少Xmn
在應用訪問量最低的時候,在程式中主動呼叫System.gc(),比如每天凌晨,
在應用啟動并完成所有初始化作業后,主動呼叫System.gc(),它可以將初始化的資料壓縮到一個單獨的chunk中,以騰出更多的連續記憶體空間給新生代晉升使用,
降低-XX:CMSInitiatingOccupancyFraction引數以提早執行CMSGC動作,雖然CMSGC不會進行記憶體碎片的壓縮整理,但它會合并老生代中相鄰的free空間,這樣就可以容納更多的新生代晉升行為,
13.mysql建立索引的原則
14.四次揮手的程序和狀態
15.演算法題:求兩個String型別的整形加法String num1 = "123";String num1 = "456";相加然后反轉
二面(80min)
1.自我介紹
2.說一下專案里面的具體做什么的,怎么保存在線觀看的人數
3.mysql大表優化
4.有用過哪些redis命令嗎(沒有)
5.資料庫里面都有什么表
6.專案里面實作最難的功能是什么
7.行程和執行緒的區別
8.為什么行程切換慢,執行緒切換快
9.怎么實作多執行緒
10.執行緒池都有什么,怎么創建,執行緒池引數,有用過執行緒池嗎(沒有)
11.執行緒都有哪些狀態,怎么讓執行緒進入阻塞狀態,阻塞,非阻塞,同步和異步的區別
12.JVM記憶體模型
13.演算法題
兩個鏈表相加,1-2-3-4-5,1-2-3-4結果就是1-3-5-7-9
兩個執行緒交替列印奇數和偶數(說了想法,沒有寫)
14.最近在看什么書嗎,有沒有接觸過什么新技術
15.有offer嗎
后面沒收到任何通知,涼涼,這么簡單的演算法題,當時那面試官一臉看弱雞的表情,給我整怕了,沒寫好,雖然寫出來了,
寫在最后
天道酬勤,雖然準備晚了,但是努力就會有好結果,中間也有迷茫,也有失落,但是硬著頭皮在2個月不到的時間刷了400道左右的題目,
當然最重要的一點就是堅持,不要放棄,船到橋頭自然直,柳暗花明又一村,offer總會有的,不要妄自菲薄,堅持才會勝利,沖鴨!!!
最后把面試資料100%免費分享給大家,也幫大家都能升職加薪!
資料領取:戳這里免費領取,暗號:CSDN




愛編程,愛分享,聽說點贊+關注的都進大廠了哦!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/188029.html
標籤:其他
