天天看點

百度-秋招提前批-搜尋研發團隊-java開發一面8.27 二面三面: 8.27别人面試的

一面

自我介紹

實習内容介紹

實驗室項目介紹

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在哪一層? 都說一下吧

四次揮手說一下? 為何要四次?

程序與線程的差別

各自的通信方式有啥差別

協程了解嗎?

算法:

百度-秋招提前批-搜尋研發團隊-java開發一面8.27 二面三面: 8.27别人面試的
百度-秋招提前批-搜尋研發團隊-java開發一面8.27 二面三面: 8.27别人面試的
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的小頂堆,每次來一個數字與堆頂的數字比較,如果比他小,就不要,否則就插入)