1. 程式人生 > 其它 >位元組實習涼經-四面演算法轉後端一面涼

位元組實習涼經-四面演算法轉後端一面涼

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());
        
    }
}

中序遍歷並儲存比較暴力,可以向私有棧實現中序遍歷來降低空間複雜度