位元組實習涼經-四面演算法轉後端一面涼
1. 演算法崗-技術一面
問題:因為有個cvpr,一直在問專案。
除此之外,主要圍繞深度學習基本知識、BN層、如何解決泛化等
題目:手寫卷積層實現方法、滑動視窗內的MAX/MEAN值
239. 滑動視窗最大值 - 力扣(LeetCode) (leetcode-cn.com)
python實現,沒寫全,寫了個大概,兩層for迴圈說了一下結束
深度學習基礎憑記憶說了大概,沒準備
2. 演算法崗-技術二面
二面開始就不太問專案了,基本上有面試官的評價作為參考。
題目:給出兩個矩形的左下角和右上角座標,返回重疊矩形的左下和右上角座標。
python-邊解釋邊寫,兩三行大概,題目可以參考--leetcode 223.矩形面積
Loading Question... - 力扣(LeetCode) (leetcode-cn.com)
3. 演算法崗-leeder面三面
題目:二維矩陣中,多個島嶼,對島嶼逐個進行標號
思路:基於dfs/bfs深搜,標號時注意0-1不要重複,對於方法的輸入輸出以及標號規則問清楚
可以參考leetcode 200. 島嶼數量 (有所不同)
Loading Question... - 力扣(LeetCode) (leetcode-cn.com)
4. 演算法崗-HR面
簡單交流未來工作計劃以及時間要求,不刷人,簡單交流,基本走形式。
結束之後考慮了一下不去演算法崗了,堅定轉後端,hr說可以內部推薦,不需要從頭來,只需要最終技術一面,繼續。
5. 轉到後端一輪掛
簡歷沒有準備專案,直接做題
題目:給定一個二叉搜尋數,寫一個迭代器,能夠按照升序逐個給出下一個元素,要求has_next()和next()函式時間複雜度O(1)
注意點:白板刷題,類的定義,包引用都需要額外注意。
特別注意:不要上來寫類框架,先分析出思路講出來,確認後再寫,沒有思路可以多問多聊(因為上來就寫卡住了被批浪費彼此時間)
// "static void main" must be defined in a public class. import java.util.*; public class Main { public static void main(String[] args) { //迭代器-二叉搜尋樹 class Node{ int val; Node left; Node right; Node(){} Node(int val){this.val = val;} } // class MyIterator{ int iter=0; List<Integer> middleOrder = new ArrayList<>(); MyIterator(Node root){ //建構函式 dfs(root); } public void dfs(Node temp){ if(temp==null){ return; } dfs(temp.left); // middleOrder.add(temp.val); // dfs(temp.right); } //has_next() public boolean has_next(){ if(iter<middleOrder.size()){ return true; } else{ return false; } } public int next(){ if(iter<middleOrder.size()){ int res = middleOrder.get(iter); iter++; return res; } else{ return -1; } } } //main主函式 Node root = new Node(5); root.left = new Node(3); root.right = new Node(6); root.left.left=new Node(2); root.left.right=new Node(4); MyIterator myIterator = new MyIterator(root); System.out.println("start"); boolean status = myIterator.has_next(); System.out.println(status); System.out.println(myIterator.next()); System.out.println(myIterator.next()); System.out.println(myIterator.next()); } }
中序遍歷並儲存比較暴力,可以向私有棧實現中序遍歷來降低空間複雜度