zoukankan      html  css  js  c++  java
  • 字节实习凉经-四面算法转后端一面凉

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

    中序遍历并保存比较暴力,可以向私有栈实现中序遍历来降低空间复杂度

  • 相关阅读:
    从0开始搭建Element项目
    Git的上传步骤
    从JVM的角度解析String
    两个字符串相加究竟发生了什么
    简单工厂搭配策略模式
    java返回集合为null还是空集合
    idea常用快捷键
    (7)Stream简介
    (6)函数式接口的简单使用
    (4)函数式接口
  • 原文地址:https://www.cnblogs.com/sharklet/p/15443108.html
Copyright © 2011-2022 走看看