一面
自我介紹
實習内容介紹
實驗室項目介紹
java反射機制
hashMap的實作原理
equal和==的差別
定義兩個變量他們是指向同一片記憶體嗎?
spring 的依賴注入與控制反轉
樂觀鎖與悲觀鎖
ThreadLocal
介紹GC,具體說一下分代收集
工作中你遇到GC一般怎麼處理?(工作中遇到頻繁GC怎麼定位問題)
指的是FULL GC,原因:
1,記憶體洩漏(代碼有問題,對象引用沒及時釋放,導緻對象不能及時回收)
2,死循環
3,大對象
一般先用 jmap導出堆記憶體快照(jmap -dump:format=b,file=檔案名 [pid]),
通過jvisualvm分析對象的引用鍊的方式來定位具體頻繁建立對象的地方
然後用 mat等工具分析出什麼對象占用了大量空間,再檢視相關引用找到問題代碼
孤兒程序和僵屍程序,怎麼解決僵屍程序問題
https://www.cnblogs.com/Anker/p/3271773.html
守護線程
cookie與session的差別
三次握手與四次揮手
擁塞控制
- 算法1:不含有重複字元的最長子串的長度
- 算法2
# 給出一個區間的集合,請合并所有重疊的區間。
# 示例 1:
# 輸入: [[1,3],[2,6],[8,10],[15,18]]
# 輸出: [[1,6],[8,10],[15,18]]
# 解釋: 區間 [1,3] 和 [2,6] 重疊, 将它們合并為 [1,6].
# 示例 2:
# 輸入: [[1,4],[4,5]]
# 輸出: [[1,5]]
'''
[[1,4],[4,5], [-1, 10]]
'''
def merge(nums):
if not nums or not nums[0]: return []
nums.sort(key = lambda x : x[0]) # start
res = []
for i in range(len(nums)):
if not res or res[-1][1] < nums[i][0]:
res.append(nums[i])
else:
res[-1][1] = max(res[-1][1], nums[i][1])
return res
nums = [[1, 1]]
print(merge(nums))
8.27 二面
自我介紹
計算機基礎都學過是吧,我們來聊聊基礎吧
面向對象的特性?多态聊一下
使用父類引用指向子類對象,再調用某一父類中的方法時,不同子類會表現出不同行為
重載與覆寫的差別? 覆寫就是重寫啊
設計模式聊聊你熟悉哪些? 說一說觀察者模式
資料結構中對hash的了解? 哈希沖突怎麼解決? 一直問更多的方法
線性探測法,平方探測法
再散列法,僞随機序列法
什麼用hash呢?
串樹,又叫字典樹
又稱單詞查找樹,Trie樹,是一種樹形結構,是一種哈希樹的變種。
典型應用是用于統計,排序和儲存大量的字元串(但不僅限于字元串),是以經常被搜尋引擎系統用于文本詞頻統計。
它的優點是:利用字元串的公共字首來減少查詢時間,最大限度地減少無謂的字元串比較,查詢效率比哈希樹高。
哈希樹(或哈希特裡)是一種持久性資料結構,可用于實作集合和映射,旨在替換純函數式程式設計中的哈希表。
在其基本形式中,哈希樹在trie中存儲其鍵的哈希值(被視為位串),其中實際鍵和(可選)值存儲在trie的“最終”節點中。
二叉排序樹,查詢時間複雜度?最差多少? 怎麼解決
紅黑樹
tcp和udp在哪一層? 都說一下吧
四次揮手說一下? 為何要四次?
程序與線程的差別
各自的通信方式有啥差別
協程了解嗎?
算法:
def minNumberInRotateArray(self, nums):
# write code here
if not nums: return 0
low, high = 0, len(nums)-1
while low < high:
mid = low + (high-low)//2
if nums[mid] > nums[high]: # 最小值在右邊
low = mid + 1
elif nums[mid] == nums[high]: # 出現相同元素
high -= 1
else: # 最小值在左邊
high = mid
return nums[low]
聊一聊項目吧
反問:搜尋架構部
技術棧,php+C++,現在在轉java
三面: 8.27
自我介紹
老家哪些? 家裡是獨子嗎?以後會回湖南給父母養老?
你有offer了?
你選擇第一份的考慮是什麼?
獲得知識的輸入是什麼?通過什麼途徑
會看源碼嗎?
人生這麼多年,你受過最大的挫折?
有沒有很大的成就嗎?
寫個代碼
字元串轉化為int,異常情況如何考慮
海量資料問題,一個大檔案中有很多單詞,統計出次數最多n個單詞
第一份工作你覺得會工作多久?
如果給你offer你會來實習嗎?
沒問題了,你有什麼要反問的嗎?
等你實習或入職的時候才知道,教育訓練時期看你的表現更适合做什麼方向!
别人面試的
作者:memory一定可以的
連結:https://www.nowcoder.com/discuss/481521?type=post&order=time&pos=&page=1&channel=1013&source_id=search_post
來源:牛客網
百度提前批面經
- 百度一面面經
計算遞歸的時間複雜度
說一下OSI模型,TCP/IP模型
說一下每一層的協定:應用層:HTTP FTP DNS SMTP
傳輸層 UDP/TCP
網絡層 IP
DNS是基于傳輸層的什麼協定的?
TCP和UDP的差別?
TCP怎麼保證到達的資料是有序的?
說一下四次揮手
說一下滑動視窗
短連接配接和長連接配接了解嗎?
算法題:1、三數之和
2、有三種不同價格的商品,你需要取其中的k件,請寫一個函數計算所有可能得到的價格
- 百度二面面經
說一下jvm
說一下Java類加載機制
說一下volatile關鍵字
Volatile怎麼保證可見性和有序性的
單例設計模式裡面的懶漢模式的雙重校驗,為什麼要用volatile修飾,如果不用volatile修飾
多個線程去操作,會有什麼問題
說一下線程池吧
說一下https怎麼保證資料的完整性
說一下redis的資料類型
說一下redis的持久化
Rdb快照會影響目前線程執行任務嘛?(BGSAVE用子程序操作,不會影響)
說一下redis的淘汰政策(LRU):
你知道redis的lru怎麼實作的嘛?(不太會)
普通的LRU底層,雙向連結清單+hashmap
算法題:旋轉數組找最小值
将一個連結清單向右旋轉k個數
- 百度三面面經
算法題:字元串的全排列
基礎知識問的不算多,但是也不難,很多都忘了
-
百度四面面經
算法題:從原點開始走,每次隻能向上向下向左向右走一步,問走n步最多能走到多少個格子,要求時間複雜度不能是4^n
一開始很傻的還是用了回溯,被提醒時間複雜度不符合要求
然後用數學歸納法勉勉強強猜出來了
最外層是4n,因為可以走回頭路,是以裡面一層是4(n-2)然後就可以用數學歸納法寫出來。如果是偶數步,最裡面那一層就是原點就是1,如果是奇數就是4*(n+(n-2)+…+1)
聊了很多項目的事情,介紹你覺得最熟悉的項目,我介紹的是學校的科研項目,然後項目亮點
你覺得自己做的好的地方,自己的優勢巴拉巴拉,聊了接近50分鐘吧
另外一個部門,上面的部門是部門直推的。。
百度一面面經:
1、說一下Java的特性,封裝繼承多态,多态是什麼?
2、說一下jvm的記憶體模型,垃圾回收
3、redis怎麼設定分布式鎖
4、說一下資料庫索引
5、說一下redis和mysql的差別
6、redis為什麼快
7、Java的鎖的實作方式
8、TCP和UDP的差別,TCP三向交握
9、說一下DNS解析服務
10、我們現在的視訊是采用什麼協定進行傳輸的
11、HTTP是無狀态的,怎麼保持他的狀态
12、說一下排序算法,1T檔案怎麼排序,
13、大頂堆或者小頂堆的插入時間複雜度是多少
14、10億個數字找最大的500個(建立一個容量為500的小頂堆,每次來一個數字與堆頂的數字比較,如果比他小,就不要,否則就插入)