作者:ricardoooo
鏈接:https://www.nowcoder.com/discuss/405849?type=post&order=time&pos=&page=1&channel=&source_id=1
來源:牛客網
快手效率超高,一點開始面試,一二面連着,四點oc。
一面:
自我介紹 聊論文
垃圾回收算法
詳細說一說CMS


類加載過程

初始化階段是虛擬機執行類構造器 <clinit>() 方法的過程。
為啥要雙親加載


new一個對象 操作系統層面是怎么分配內存的
不會
寫SQL的注意事項
(1)選取最適用的字段屬性
(2)使用連接(JOIN)來代替子查詢(Sub-Queries)
(3)使用聯合(UNION)來代替手動創建的臨時表
(4)事務 保持數據庫里數據的一致性
redis會嗎(不會)
Java寫的多嗎(python多 Java沒有寫太多)
spring呢(了解一點)
那就寫個題吧:計算x,y兩個數的和,需要花費
(c∗x+c∗y)(c*x+c*y)(c∗x+c∗y)秒,怎么合理安排計算的順序,可以使得花費的時間最短。(我太菜了 寫了半天 寫完還超時了)
二面:(二面面試官和藹可親循循善誘)
自我介紹 聊未來規划
寫個題:判斷數組中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的絕對值最大為 k。(力扣219題)
class Solution {//看筆記,散列表 public boolean containsNearbyDuplicate(int[] nums, int k) { Set<Integer> set=new HashSet<Integer>();//散列表,不能存儲相同元素,而且存儲元素順序不是按照存入時的順序。 for(int i=0;i<nums.length;i++)//題意是,j與i差值k以內的時候,倆數相等,就算true。所以,讓HashSet里面元素小於等於k個,一旦當前元素在set里面存在,就說明k個下標以內,有相同的數出現了,則符合返回true的要求。如果當前set里面元素總數大於k,就退出最舊的元素,保證不超過k個 { if(set.contains(nums[i])) return true; set.add(nums[i]); if(set.size()>k)set.remove(nums[i-k]); } return false; } }
寫個sql:課程名中包含‘計算機’的課程 且 成績小於60分學生的 學號、姓名
數據庫中JOIN是怎么實現的,IN呢

一個進程是怎么跑起來的(胡亂說了一堆)