面试技巧和个人面试记录

一、通用面试问题

技术面试

一般都是按照你的简历写的东西来问,不懂的东西一定不要写上去。

项目必问的问题有:

  • 介绍以下你简历上的XX项目(一定要有条理,如果项目不对口,就不要说很多专业名词,尽量通俗易懂)
  • XX项目你主要做什么工作,有什么成果
  • 项目中难点是什么?遇到过什么样的困难?怎么解决的?
  • 项目中如何与人合作?你从项目中学到了什么?

HR面试

经历相关

  • 大学中最自豪/最优成就感的事情

  • 坚持了什么事情

  • 做项目中遇到的困难

  • 印象最深刻的事情

  • 最遗憾的事情

  • 最失败的事情

工作相关

  • 未来的规划/未来的发展方向:
  • 打算在实习期间做什么
  • 对加班怎么看
  • 为什么选XX部门

个人相关

  • 对你影响最大的人
  • 自己的缺点
  • 自己的优点
  • 印象最深的夸奖和批评
  • 用3个词描述自己(要想好对应的举例)

面试反问环节

每次面试反问如果不知道问啥,可以试试问下面这些问题:

  • 【技术】部门具体做什么业务?目前支持的产品是什么?部门规模怎么样?
  • 【技术】本次面试自己表现如何?有什么需要改进的地方?(有的面试官可能不透露)
  • 【技术】反问面试官刚刚没回答好的问题
  • 【HR】实习薪资待遇和补贴、是否可以转正?实习持续多久可以转正答辩?
  • 【HR】入职培训机制?

二、春招实习面试记录

1 阿里钉钉事业部

一面

2021.03.05 30min 左右

  • 有没有参加过计算机方面的比赛,比较厉害的?排名怎么样?

  • 说说JAVA产生线程安全问题的根本原因?

  • JAVA用什么解决线程安全问题?

  • Java运行时内存中为什么要区分老年代和新生代?

  • Spring Boot中使用什么注解来新增一个URL接口?使用什么注解可以将Bean交给Spring管理?

  • 数据库为什么要有索引?索引为什么可以加快查找速度?

  • NIO和传统IO的区别?NIO中需要用多个线程来处理嘛?

  • epoll机制和其他多路复用机制的区别?

  • 双亲委派加载机制为了解决什么问题?

  • Session和Cookie的区别?应用场景?登录后打开新标签页怎么实现免登录?

  • TCP三次握手,为什么不是两次或者四次?

  • 应用上线后出现问题怎么解决?有没有用过IDE远程Debug?怎么排查问题?

  • 项目中遇到的印象最深刻的问题以及解决办法?

  • DEBUG 下一步/进入方法的快捷键?

  • 平时对什么技术感兴趣,从哪些渠道获取资源?

二面

2021.03.05 43min

疯狂问项目,项目上写的东西一定要要清楚(即使不是自己做的)。

  • 项目的目的?
  • 项目中最大的难点?面临的问题是什么?
  • 为什么用TCP?
  • 物联网项目的数据库是怎么设计的?
  • 团队管理网站数据库是怎么设计的?说一个使用场景?
  • 团队项目管理网站在使用过程中遇到了什么问题?有过什么样的解决尝试?
  • 内网穿透的实现原理?
  • Websocket技术是实现的?
  • 跨站请求伪造攻击是啥?说一下具体场景?
  • JWT是啥?为什么用JWT?
  • TCP三次握手?四次挥手?
  • 未来的规划?还有什么不足的地方?怎么弥补不足的地方?
  • 数学建模比赛是解决什么问题?怎么解决的?
  • Redis怎么构建分布式/集群?【只说了大概,应该从集群的构成、好处、分槽、扩容、故障转移几个方面来说】
  • Redis怎么扩容?【说的不够详细】
  • 为了胜任JAVA后端的工作,是怎么准备的?还有哪些不足?【操作系统、SpringBoot底层原理不懂,任务驱动型学习】
  • 介绍项目需要采用一种模块化的方式来介绍!!!:比如整个平台由哪几部分组成,每一部分之间是怎么交互的。

三面

2021.03.09 23min 完全不问项目???

  • 简单介绍自己和所做的项目?
  • 对C++还是Java比较熟?
  • Java中的ArrayList和LinkedList的不同?
  • JVM的类加载的过程?
  • 用过Java中间件嘛?
  • 项目里面用了什么设计模式?是怎么用的?
  • 说说IEEE比赛中影响比较深刻的题?拿了奖嘛?
  • 把所学的东西运用到实际中的例子???
  • 未来的规划是怎么样的?
  • 为什么选择钉钉事业部?
  • 拿过其它公司的Offer嘛?
  • 身边的同学一般都投哪里的公司?
  • 有什么要问的?

2 腾讯CDG

一面

2021.03.18 90min 腾讯CDG

  • 智力题:一个蛋糕切三刀分成四块,有哪些切法
  • 算法题:

image-20210318213553331

代码实现:

import java.util.*;
 
class Main {
    public static void main(String[] args) {
        // Scanner in = new Scanner(System.in);
        // String s = "()";
        // String s = "{((()())())[()]}()";
        // String s = "())";
        // String s = "([])";
        String s = "())(()";
        char[] cs = s.toCharArray();
        Stack<Character> stack = new Stack<>();
        int sCnt = 0, mCnt = 0, bCnt = 0;   // 小中大左括号计数
        for (char c : cs) {
            if (isLeft(c)) {
                stack.push(c);
                if (c == '[' && sCnt > 0) {
                    System.out.println("非法");
                    return;
                }
                if (c == '{' && (sCnt > 0 || mCnt > 0)) {
                    System.out.println("非法");
                    return;
                }
 
                if (c == '(') {
                    sCnt++;
                } else if (c == '[') {
                    mCnt++;
                } else {
                    bCnt++;
                }
            } else {
                if (stack.size() == 0) {
                    System.out.println("非法");
                    return;
                }
 
                char popC = stack.pop();
                // 不配对直接不合法
                if (!match(popC, c)) {
                    System.out.println("非法");
                    return;
                }
                // 计数减一
                if (popC == '(') {
                    sCnt--;
                } else if (popC == '[') {
                    mCnt--;
                } else {
                    bCnt--;
                }
            }
        }
        System.out.println("合法");
    }
 
    private static boolean isLeft(char c) {
        return c == '(' || c == '[' || c == '{';
    }
 
    private static boolean match(char cLeft, char cRight) {
        if (cLeft == '(') {
            return cRight == ')';
        } else if (cLeft == '[') {
            return cRight == ']';
        } else if (cLeft == '{') {
            return cRight == '}';
        } else {
            return false;
        }
    }
}
 
  • 平时使用的技术栈
  • HashMap多线程存在什么问题?怎么解决?除了ConcurrentHashMap外自己写代码怎么解决。
  • sychronizedReentrantLock的使用方法有什么区别?
  • 公平锁和非公平锁的区别?synchronized是一种非公平锁?
  • 线程的生命周期和状态?
  • 进程间通信的方式有哪些?
  • 有没有多线程编程的经验?
  • ThreadLocal的原理和使用场景?
  • 如何确定对象是否需要被回收?垃圾回收算法有哪些?
  • 说说CMS和G1垃圾收集器的区别?
  • 年轻代回收的过程?年轻代为什么要分E区/S0和S1区(为什么要两个S区)
  • 对象什么时候进入老年代?什么是大对象,由什么参数决定?
  • TCP头部长度和格式?TCP默认窗口大小?数据太大怎么办?分片后会乱序嘛?出现差错了怎么办?
  • HTTP和HTTPS默认端口?HTTP头部格式?
  • binlog所有相关的东西?和undo log以及redo log的存储形式的不同?【mark】
  • MySQL主从复制的过程,binlog怎么使用的?
  • 分库分表怎么做,有没有试过分库分表?
  • 一张表的并发量和什么有关?【CPU核数、连接数、表的互斥访问数】;并发数量大致是多少?
  • 在B+树中查找的过程是怎么样的?
  • 主键索引和唯一索引的区别?
  • gap lock是什么?
  • 主服务器怎么确定从服务器同步完成了呢?同步失败了怎么办?
  • 数据库分库分表?一个分表后的数据库实例能顶住多大的并发请求(500左右)?
  • 未来的规划?
  • 项目中的难点在哪里,解决了什么问题?
  • IEEE比赛中印象最深刻的地方?
  • 项目中的收获

面试官反馈:简历项目没有亮点?没有把难点说出来?没有可深挖的东西。

二面

2021.03.24 50min 腾讯CDG

  • 项目的构成(还是没给面试官描述清楚,被打断了)
  • Java的Socket编程有没有用过?用的哪种模式?(应该说没用过,但是了解过)
  • 项目里的Socket编程用的哪种模式?
  • TCP/HTTP都用的现成的接口?
  • TCP如何保证可靠传输?
  • TCP TIME_WAIT状态在哪里出现?
  • JVM内存区域
  • 说说GC(从垃圾的判定、垃圾回收算法、分代回收理论来说)
  • 了解G1吗
  • MySQL用的什么存储引擎?
  • MySQL事务的隔离级别?
  • 可重复读怎么实现的(加锁?那岂不是串行化了?只加行锁?读写锁?读快照?啥啊)。
  • 读写是否加锁,什么时候加锁?写加锁那就不能并发了啊?(行锁,可以并发,不是表锁?)
  • SELECT … FOR UPDATE干嘛的?(加X行锁,加了之后呢)
  • SQL注入了解吗?
  • B+树有什么特点吗?(从存储结构、叶子节点的构成来说)
  • 怎么处理日志打印,并发量高的接口怎么打印日志,存文件的时候需要注意什么?(应该反问面试官到底怎么做)
  • 项目里面的技术难点?
  • 共享内存了解吗?
  • 进程间通信了解吗?

三面

2021.03.27 25min

  • 数据库的索引有哪些?【B+树索引(聚集索引、非聚集索引)、哈希索引、全文索引】
  • 事务的隔离级别有哪几种?
  • 事务并发控制怎么做的?
  • 事务备份的checkoutpoin机制是怎么样的?
  • 网络方面常见的IO模型
  • 操作系统的内存管理是怎么做的?【页式管理+多级页表和快表】
  • 文件系统了解吗?
  • Redis怎么做容灾?
  • Redis内存怎么管理的?【16个数据库,过期键删除策略,内存淘汰策略】
  • 微服务方面有了解嘛?
  • 高并发有了解吗?

HR面

2012.03.29

  • 不记录了,很人性化的问题。

3 字节 网络工程师—基础架构

一面【挂了】

2021.03.26 40min 估计是手撕代码太慢,加上操作系统没有深入学习,挂了!!!

  • HashMap的底层实现原理(没背熟悉,应该从底层结构、PUT、GET、扩容)?扩容每次都扩容两倍嘛(如果太大,合理吗)?
  • 红黑树的原理?
  • JDK1.8的时候HashMap怎么做?(说的太简略了)
  • 什么是红黑树?他有什么特点?
  • 操作系统中堆和栈的作用?哪个地址是由高向低哪个是由低向高?
  • 内核态和用户态的区别?为什么要这样区分?用户态如何切换到内核态?
  • CPU的特权指令分为几级?
  • 操作系统的进程调度算法有哪些?
  • IP包的头部?TCP包的头部?
  • 做个题目

image-20210326152227075

4 美团 基础架构

一面

2021.04.02 40min 基础架构/网络 北京

  • String/StringBuilder/StringBuffer的区别,使用场景?
  • HTTP协议是做什么,主要原理是怎么样的?
  • POST请求的数据在哪里?HTTP服务端是怎么解析的?
  • Mabatis的#$的区别是什么?参考
  • TCP连接的过程?
  • TCP对端不存在的话,第一次握手会怎么样?(TCP是RST,UDP是ICMP端口不可达)
  • TCP连接建立完成后,客户端发数据,服务端未响应ACK,此时客户端会怎么处理。
  • Redis的基本数据类型有哪些?
  • 很多User对象,想做Redis缓存,用什么数据结构?怎么设计key?如果想找所有性别是男的?【组合key,参考
  • Redis中大数据存储时key值怎么设计?比如存储大量的人员数据?
  • 算法题:240. 搜索二维矩阵 II

二面

2021.04.20 30min 基础架构/网络 北京

问了问通用性的问题,最后让面试官转到北京了!

5 华为 通用软件开发

一面

2021.04.09 40min 成都华为无线BG

  • 复盘笔试题ORZ(第二题不会做)
  • Java中的ArrayList和LinkedList的区别
  • HashMap说一下
  • 线程的状态变化
  • 项目中用的哪种Socket
  • TCP介绍一下
  • 网络传输的字节序、哪些数据类型面临字节序的问题
  • HTTP介绍一下
  • 做一道算法题:子序列的最大值

二面【挂】

2021.04.09 30min

主要就问了项目做什么的?“大规模”和“平台两个字怎么体现?平台的扩展性在哪里只是数量多吗?汇聚节点的主要功能(协议转换、命令转换、数据预处理等)?

6 字节 电商平台

一面

2021.04.15 60min JAVA研发

  • HashTable和HashMap的区别是什么?

  • 为什么HashTable的key不支持为null?

  • Java中GC的机制

  • GC进行内存遍历的时候,内存在变化,怎么保证标记正确?暂停用户线程的话当内存空间比较大,效率会很低嘛,怎么解决?并发标记和修正标记的细节?

  • 怎么让JVM产生OOM奔溃?除了无线递归、申请大内存数组。

  • 说说Java中的锁有哪些?synchronized原理?Lock原理?AQS原理?

  • MySQL的主键索引和二级索引的区别?如果表上没有主键怎么办?

  • InnoDB的MVCC机制介绍一下?【从作用,到原理进行解释】

  • MySQL的默认隔离级别是什么?其它隔离级别呢?

  • 什么是脏读、幻读?

  • redolog和undolog介绍一下?它们是服务层还是引擎维护的?

  • 写一个SQL,给一个tbl_stu表含有stu_id name major score四个个字段(每个学生上多门课),求总分最多的那个人?mysql总分最高的学生_mysql查询各班最高分学生的信息-Go语言中文社区_于苏显的博客-CSDN博客

    SELECT tbl_stu.stu_id, tbl_stu.name, sumScore from tbl_stu 
    inner join
    (SELECT stu_id, SUM(score) sumScore FROM tbl_stu GROUP BY stu_id) tbl_temp
    on tbl_stu.stu_id = tbl_temp.stu_id
    ORDER BY sumScore DESC LIMIT 1;
     
    或者
     
    SELECT tbl_stu.stu_id, tbl_stu.name, tbl_temp.sumScore from tbl_stu 
    inner join
    (SELECT stu_id, SUM(score) sumScore FROM tbl_stu GROUP BY stu_id ORDER BY sumScore DESC LIMIT 1) tbl_temp
    on tbl_stu.stu_id = tbl_temp.stu_id;
  • JWT里有哪些信息?JWT怎么解决安全问题?别的用户可以读取到你的JWT嘛(XSS攻击?为什么输入框输入js可以执行)?

  • 做题:

二面

2021.04.20 50min Java后台开发

  • 怎么解决TCP的粘包/拆包问题(从头长字段到代码的处理逻辑)
  • TCP上层用的心跳机制、服务端/客户端的套接字最大数量的限制有哪些(文件句柄数、系统性能、端口占用)?
  • BIO/NIO的区别,项目中用的哪一种模式?
  • MySQL的索引采用什么结构?
  • B+树和B树的区别?跳跃表了解吗?和B+树的区别是什么?
  • Object中有哪些方法?
  • Equals()和HashCode方法重写时需要注意什么?HashCode相等则Equals必须相等,反之不然?
  • wait/notify是做什么用的?wait/sleep/yeild方法的区别?
  • 做题:
    • 两个文件(考虑文件很大和文件很小的时候分别怎么处理),每个文件中含有一行一行的字符串,怎么找出重复字符串
    • 力扣32题

三面

还有很多问题忘记了。。。

  • Redis用作MySQL的缓存时,如果要更新MySQL中的数据,是先删缓存还是先更新数据(先更新数据,在删除缓存)
  • Redis的内存淘汰策略有哪些?
  • LRU怎么实现?在添加、删除、修改操作时怎么处理?

7 腾讯音乐TEM面试

一面

2021.04.19 44min 后台开发

  • 团队管理网站怎么设计的
  • 团队管理网站的Redis用来干嘛的?
  • MySQL存储引擎有哪些?
  • InnoDB底层索引是怎么样的?能不能用B树或者红黑树?
  • 红黑树和AVL的区别?
  • Redis有哪些数据结构?阅读量用的哪种类型?统计文章阅读量在高并发情况下会产生Redis覆盖怎么解决?(WATCH/LUA脚本/阻塞加锁/消息队列异步写)
  • Redis有哪些数据结构?Redis的ZSET做一下介绍?跳跃表介绍一下?
  • Redis集群模式下的故障转移?Raft选举的详细过程?
  • TCP和UDP的区别?
  • TCP怎么保证可靠性?
  • TCP的拥塞控制说一下
  • 浏览器输入URL的过程
  • 进程和线程的区别?
  • MYSQL的查询语句
  • 排查Linux的系统占用怎么看(top指令,CPU负载、内存磁盘使用量),怎么看网络连接数(netstat + grep + wc )?
  • 怎么解决哈希冲突?【拉链法、开放地址法、再哈希法】
  • Java中堆和栈的区别?
  • Java中sleep和wait()的区别?

二面

20121.04.21 45min

  • JAVA的面向对象怎么理解?
  • JAVA多态怎么实现的?(继承 or 接口实现)
  • 继承如何实现多态?假设目前有一个引用,如何判断是需要调用子类还是父类的方法?
  • Java对象在JVM里的生命周期(ES老年代)
  • Java对象的创建过程是怎么样的?
  • 所有new出来的对象都放在新生代嘛?多大会直接放在老年代呢(阈值是什么)?
  • JDK1.8默认使用的垃圾收集器是什么?Parallel Scanvage/Old具体的算法是怎么样的?多线程收集各个线程会有竞争的情况嘛?多个线程是否会回收到同样的一块内存?
  • B+树的结构是怎么样的?相比于普通的树有哪些优势?有哪些应用场景?
  • B+树作为索引的优势在哪里?缺点是什么?
  • TCP三次握手,为什么是三次不是两次,TCP fastopen了解吗?为什么Fastopen可以两次握手?
  • TCP如何保证可靠性?
  • TCP怎么检测网络发生拥塞?
  • 进程和线程的区别?
  • 线程会共享哪些资源?怎么样实现共享的(共用地址空间怎么实现的)?
  • 进程间通信的机制有哪些?哪种方式最快?为什么快?
  • 共享内存怎么实现的?使用共享内存通信是哦福会产生缺页中断?缺页中断后系统如何处理?
  • 开放性题目:一个蚂蚁窝中有很多蚂蚁,在不破坏蚂蚁窝和上海蚂蚁的情况下如何统计蚂蚁的数量。统计的准确性会收到什么因素的影响?

三面【待补充】

2021.04.23 25min

  • 项目中怎么处理大数据的场景?

  • 最近在学什么有什么收获?

  • 两个整形数组、无序、唯一;如何找出他们之间的重复数字(HashMap bit数组?自己如何实现哈希?)

8 京东面试

一面

2021.04.20 40min

  • 怎么做检索 HBase?
  • 线程安全的根本原因?
  • 1?
  • 如何保证线程安全?同步锁和Lock的区别,性能区别?
  • JVM调优?FullGC频率太高了怎么调优?【增大老年代,然后呢怎么继续减小频率】
  • Linux怎么排查性能问题?top/ps/jstack工具进行排查
  • 怎么查看系统TCP连接数?TIME_WAIT的连接数量?
  • MySQL查询慢是什么原因?【索引、锁、数据量太大】
  • 怎么分表?
  • 怎么优化join(代码逻辑 以及 数据库设计)
  • 洗牌算法?

二面

2021.04.25 30min 交易风控

  • MySQL存储引擎有哪些?InnoDB和MyISAM的区别?
  • left join/right join/join的区别?
  • MySQL的SQL语句执行很慢的原因有哪些?【索引、是否命中、锁、表数据大小、及其性能】
  • 如何分表?
  • MySQL什么时候用乐观锁和悲观锁?
  • MySQL什么时候需要用到事务?事务有哪些特性?
  • jd里用户下单,交易信息如何存储?(一个用户的一个订单可以有多个商品、发票、优惠券、地址等信息如何存储)
  • 数据库为什么要使用连接池?
  • JDK1.8的新特性有哪些?
  • Java中常用的集合有哪些?哪些是线程安全?哪些是非线程安全的?
  • ConcurrentHashMap的原理?
  • 如何创建一个线程?【继承Thread/实现Runnable Callable接口/使用线程池】
  • 线程池的工作原理?
  • Redis用来做什么?有哪些基本数据结构?五大数据结构的底层实现【需要再次整理一下内容】?
  • 如何实现异步上传文件?
  • HTTP请求到达服务器的过程?【从两个角度来看】

9 美团 到店Sass餐饮

一面

2021.04.27 美团到店Sass餐饮业务 北京面的但是说可以转成都

  • 物联网项目中,如何保证大量传感器的接入效率
  • 项目中遇到的难点
  • TCP三次握手和四次挥手的过程?
  • SYN洪泛攻击?怎么解决这个问题?
  • 三次握手中最后一次发ACK丢失了会出现什么情况
  • MySQL InnoDB索引的底层结构是什么?为什么用B+树?有什么好处?
  • MySQL的锁了解吗有哪些锁?如何解决幻读问题?
  • MySQL的MVCC了解吗?用在哪些事务隔离级别?
  • Java的深拷贝和浅拷贝;如何实现深拷贝?
  • Java的类加载机制?双亲委派机制的好处?如何破坏双亲委派机制?
  • JVM的内存模型?
  • 什么情况下会造成OOM?
  • 智力题:把1000分成任意个数字,要求它能这次任意一个数字N(相当于是10进制数字的二进制表示,所以只需要把它拆分成2的幂次方的堆即可)
  • 智力题:5个海盗(1~5号)分50个金币,1号先提分配方案,如果没超过半数人统一则杀死它,由下一个编号的海盗继续提出分配方案。 有趣的海盗分金问题(博弈论)_葡萄战车的博客-CSDN博客
  • 算法题:生成一个随机数组包含0~9(洗牌算法)

二面

2021.04.29 50min

  • SpringBoot和Spring MVC的区别是什么?

  • 如何保证网站的安全性?

  • 网站如果采用分布式部署需要哪些改动?

  • 如何实现SSO?

  • 网站最大的收获和挑战?

  • 操作系统的段页式内存管理具体是怎么样?为什么要这样做?

  • 操作系统的临界区是什么?

  • Java的基本类型有哪些?double类型的比较和其它类型的比较有哪些不同?为什么会有不同?

  • Java的线程池有哪些主要参数?参数的作用是什么?

  • 线程池的执行原理?

  • IO密集和CPU密集两种场景下,核心线程数的设置有没有差别?

  • HashMap是线程安全的嘛?用在多线程环境下有哪些问题?循环链表是怎么产生的、细节是怎样的(和链表插入方式有不同嘛)?

  • 队列和栈的区别?

  • 如何用两个栈来模拟一个队列吗?如果栈的大小分别为M和N(M > N),能够实现的最大队列的大小是多少?(正确答案是2N + 1)。

  • 如何用两个队列来模拟一个栈?(用一个队列即可其实)

  • Redis有哪些数据结构?

  • Redis的线程模型?

三、秋招正式工作面试记录

1 京东-商业提升事业部-提前批 :accept:

一面 提前批

2021.07.26 9:00 25min 电话面试 主要做京东广告投放业务

  • 实习时间
  • Java常见的集合,哪些用的比较多?(只说了HashMap、ArrayList)可以尝试再说一下优先队列?
  • HashMap的基本原理,源码(可以再补充一下ArrayList的原理补充道笔记中)
  • 为什么会产生hash冲突?(hash函数冲突,数组下标冲突);hash函数有了解过嘛?(需要深入看一下)
  • HashMap为什么要使用红黑树,不能使用平衡树,二叉树?(待整理,没说明白)
  • 了解哪些树形数据结构?
  • HashMap是线程安全的嘛?如果要实现线程安全怎么做?自己怎么加锁?
  • 如果针对一个类的static变量进行加锁,那锁的是什么?(答的是锁住这个类本身)
  • 在哪些地方用到了多线程?为什么要用多线程?
  • 线程池了解吗?用的什么线程池?怎么对线程池进行包装的(继续深入看一下阿里的TTL线程池,牵引到ThreadLocal)。
  • 实习主要在做什么?实习期间最大的困难、怎么解决的、收获是什么(开发流程和规范、沟通合作,整理一下技术和非技术上的收获)?

二面 提前批

2021.08.03 9:45 32min 电话面试 主要做京东广告投放业务。

  • UDP / TCP 的区别
  • TCP三次握手是怎么样的
  • 实习期间三个接口都问了一下:
    • 线程池线程数怎么设置的
    • 显示不一致的问题怎么发现的,怎么解决的
    • 接口替换对上线会有什么影响(旧接口也在用、下一个版本下线,旧机器流量依旧打到旧的接口上,且该接口不影响主体业务)

HR 提前批

2021.08.05 10:57 20min 视频面试 主要做京东广告投放业务。

  • 实习期间最大的收获,遇到的困难?
  • 未来的规划
  • 优缺点
  • 如果有多个offer,怎么选择?

2 华为-Cloud BU提前批

面试体验不大好,问问题也很混乱?不知道问的啥?

一面

  • 实习期间实现的多线程为啥不用异步回调机制要用多线程???
  • 操作系统的内存回收怎么做的???(不清楚)
  • 算法题:获取第N个丑数(写的是堆排序的时间复杂度,有更好的动态规划的算法!)

二面

  • 项目问了一些些
  • 算法题:四个无序链表获取其中的中位数,要求不能把四个链表有序合并后再取中间值

三面-主管面

  • 介绍项目,项目中遇到的难点,怎么解决的?
  • 学校成绩、比赛
  • 那门课学的比较好?多少分?怎么学的?
  • 华为价值观是什么?怎么看
  • 有什么兴趣爱好?压力大的时候怎么缓解压力?

3 百度-提前批 :accept:

一面

2021.08.03 11:00 50min CDN节点大量数据/日志处理和分发

  • 大规模项目中,汇聚节点的汇聚功能是指什么?(从不同网络接口收数据,处理并上报数据)
  • 汇聚时怎么处理时间戳?周期性汇聚,如果数据到达时延已经超过了周期,应该怎么处理(过时丢弃、设置一个时间阈值超过阈值则丢弃过期数据、把之前的具体数据存下来后续收到数据后再更新)
  • 实习经历中TP99和TP9999的时延差异为什么比较大?
  • 怎么提升接口稳定性?如何降低响应耗时(代码本身的效率、增加缓存、请求做分流处理、SQL查询尽量使用索引)
  • Java中创建线程有哪些方式,这些方式有哪些区别?继承Thread和实现Runnable接口的区别是什么?
  • 操作系统的线程状态有哪些?
  • 进程之间怎么通信?
  • 怎么理解线程安全和不安全?
  • Java中怎么实现HashMap的线程安全(put/get前手动加锁,Collections.synchroizedMap(),用线程安全的集合类)
  • HashMap的底层原理
  • 自己实现线程池应该考虑哪些方面?
  • 如何实现动态改变线程池的大小?
  • 多线程为什么会产生死锁?发现了死锁怎么去排查?Java里面的工具查询死锁状态?(JDK提供的JConsole工具)
  • Linux下怎么排查cpu利用率比较高的问题?如果是JVM的GC线程数太高导致CPU占用率高,如何进行调优?
  • Linux如何看磁盘用量情况,磁盘IO请求,进程端口占用情况?
  • 场景题:多个线程统计多个目录大小,最终交给第五个汇总,Java中怎么实现(Future、全局变量存储结果+join、并发工具类)
  • 场景题:单个目录中文件比较多,需要对目录中的文件进行解析合并,文件比较多、处理速度满,怎么处理?

二面

2021.08.04 11:00 50min

  • 自顶向上或者自底向下介绍一下网络是怎么工作的?
  • 为什么MAC层要对物理层的数据做一个划分起始?
  • 为什么拥塞控制为什么要传输层做呢?可以在网络层做吗?
  • 什么是网络?什么是不同的网络?
  • IP地址是怎么划分的,IPV4地址有多少?全球IP地址怎么分配的?
  • 怎么样才算是否处于同一个内网?跨三层设备就不属于一个局域网了嘛?
  • 什么叫自治系统?
  • 了解OSPF协议吗?是完成什么功能的?
  • 现代操作系统的构成?
  • 操作系统看过哪些书,如何学习的?
  • 操作系统中哪些内容比较有意思?哪些是专研过的?
  • 介绍一下内存管理:核心要点/职责。(内存分配和管理、)
  • 页表存在哪里?磁盘?内存?多次IO?
  • 介绍下项目的背景和目的
  • 大规模的可行性怎么验证?要实现大规模的难点或者瓶颈在哪里?
  • 在项目中的核心工作是什么?(数据处理+传感器调度)
  • 网络中通信量大是怎么处理的(分层/分部分处理,通信压力在哪:负载均衡的路由、图像数据压缩)
  • 算法题:自己挑一个,力扣61 旋转链表

三面

2021.08.05 17:00 40min

  • TCP/UDP的区别、适用场景?UDP用在音视频流的具体协议有哪些?
  • TCP为什么要在应用层做拆分包
  • 为什么要三次握手(除了确认双方收发、重复SYN到达、还有别的原因吗)
  • 为什么要四次挥手
  • 网络不通了怎么排查?(物理网口、ping/traceroute、IP配置、ARP、抓包、)
  • 网页打不开了怎么排查
  • Linux和Ubuntu区别在于?不同Linux的发行版区别在于(如Ubuntu和CentOS)?
  • 项目相关的问题
  • 工作地选择?工作内容有何倾向?工作岗位倾向?

4 字节-基础架构-提前批 :accept:

一面

2021.08.03 17:00 50min 基础架构 存储方向

  • 项目经历/实习经历面临的最大的挑战是什么?怎么解决的挑战(说的是大规模项目)
  • 大规模项目中,虚拟节点是一个集群还是在每一台机器都有吗?
  • TCP/IP五层协议族自底向上分层是怎样的?具有代表性的协议是什么?
  • MAC层中以太帧的格式,数据传输负载最大最大是多少?
  • MTU限制的是那一层的数据,是网络层给MAC的数据嘛?如果IP层数据大于MTU会在哪里做切片,切片后在IP包的那一部分有所变化?
  • TCP的UDP的区别是什么?
  • TCP建立连接的详细的过程,握手过程中双方怎么知道对方期望知道的TCP交互的最大报文段的长度(MSS)?MSS协商基于什么规则,一般是多大。
  • 用UDP实现可靠传输,应该从哪些方面进行设计。
  • 在浏览器中输入一个网址知道返回页面的过程介绍一下,越详细越好。
  • DNS解析的过程是怎么样的?(先查缓存,再递归请求服务器)
  • Redis为什么快?(内存、单线程、IO模型)
  • Redis的持久化机制,RDB和AOF在实际开发中怎么选择和使用?
  • Redis在持久化的阶段还能对外提供服务嘛?
  • Redis内存满了怎么办?有哪些淘汰策略呢?
  • 一瞬间有大量key ttl失效,(缓存雪崩),怎么解决?
  • 无论数据是否存在Redis,大量请求都需要打到Redis中,有没有一种方法可以提前过滤一下数据?(布隆过滤器)
  • LRU的实现机制
  • 算法题:手写LRU

二面

2021.08.06 17:00 25min 基础架构 存储方向

  • 什么是跨域访问问题?(描述需要加强)
  • JWT身份认证是怎么做的?
  • 服务端怎么根据用户名和密码生成JWT呢?
  • 如果其它人拿到Token,能否访问接口?(Token安全问题怎么解决)
  • 心跳机制怎么实现的?
  • TCP本身具有keepalive机制,什么需要在应用层实现这个机制呢?
  • 重传退避窗口计算bug是什么bug,怎么解决的呢?退避时间不一样会有什么问题呢?
  • 重传次数达到最大后怎么处理?需要应用层自己做处理?
  • 多径路由是什么意思?用的什么路由协议?
  • 美团实习菜品自动配图功能操作效率低原因是什么?怎么解决的?
  • Redis中哨兵是做什么用处?
  • Java中的互斥和同步机制是怎么样的?怎么实现的?

三面

2021.08.16 15:00 40min 基础架构 存储方向

  • 死扣项目细节(难点、技术点到底在哪里、细节)

  • 怎么debug的(打日志+抓包)?用的什么日志组件?

  • 项目中用到了MySQL的主从模式嘛?怎么保证主从的严格一致性?

  • SQL调优怎么做?

  • 操作系统协程是什么作用?

  • 操作系统的虚地址到物理地址的转换过程

  • Linux怎么排查性能瓶颈、找热点代码、磁盘io情况

  • 后续的规划

  • 算法题:验证一个字符串是否为合法的ip地址(注意转义使用String.split(".")中需要转义String.split("\\.")

5 阿里-阿里云存储 :accept:

一面

2021.08.06 11:00 25min 电话面试

  • 数学比赛做什么?负责什么?怎么实现/改进的?
  • IEEE比赛遇到的困难?
  • JWT认证是什么?怎么做的?
  • 介绍一下物联网平台?你负责哪一部分?
  • 批量接口使用的线程池嘛?线程池参数怎么配置的?
  • 科研方向?
  • 说一下计算机网络层次体系?
  • TCP有分包粘包的问题吗?

二面

2021.08.07 14:00 45min 视频面试

  • 物联网平台项目上线了嘛?

  • 物联网平台和目前的现有的物联网平台有什么区别?优势在哪里?

  • 仿真平台里具体做了什么事情?

  • 详细介绍一下网络故障自愈。(故障检测,如果是割点才恢复)

  • 数据后台能够支持多大的QPS(对物联网这边,每秒能响应多少请求)

  • 毕设课题是什么?

  • TCP三次握手,四次挥手的过程

  • 存储的层次结构,分为几个层次,为什么要分层

    在这里插入图片描述

  • 调试过数据读取的性能嘛?

  • 访问一个网站发送速度很慢,怎么排查问题。(网络问题、服务器性能、负载均很、MySQL命中索引、MySQL加缓存、CDN加速)

  • 了解过DNS(学习过还是做过相关的开发)

  • 工作中用到过锁嘛?数据库锁、内存锁?

  • 乐观锁和悲观锁的概念?

  • 了解过分布式锁嘛?

  • 智力题:两根不均匀的蜡烛,每根烧完需要60min,怎么得到15min的计时(一根点两头,另一根点一头,一根先烧完后把另一个根的另一头也点起,烧完需要15min)

  • 算法题:一个m x n的矩阵,机器人从左上角出发,只能往右走或者往下走,问到达右下角的路径有多少条(动态规划 dp[i][j]表示从左上角到位置(i,j)的路径数,则dp[i][j]=dp[i-1][j] + dp[i][j-1]

三面

2021.08.07 16:30 70min 视频面试

  • 项目中的挑战(技术方面、架构设计?调试?)

  • 联调有什么方法论嘛?(百度一下)

  • 汇聚节点的可靠性和可用性是怎么保证的?传感器节点怎么选择需要汇报的节点?

  • 如果汇聚节点上层逻辑出问题了,但是信道还在,终端节点怎么处理(心跳无法保持、自动切到备选节点)

  • 汇聚损坏了之后,又恢复了,传感器节点怎么转移回来(汇聚节点做协调)。

  • 汇聚和监控中心之间用什么协议来实现的?数据是合并提交还是单独提交?通信协议为啥采用UDP和TCP一起使用?

  • 为什么平台会产生丢包?

  • UDP最大发送长度是多少?UDP.send()发送超过阈值会返回什么?

  • TCP断开连接的过程

  • TCP time-wait状态什么时候会进入,没有time-wait会有什么情况发生

  • 往MySQL中insert一条数据时,从提交语句到存入数据库文件中的过程是怎么样的?(结合B+树)

  • 线程切换时操作系统主要做了哪些事情?线程切换的代价有多大(消耗的时间有多大?)

  • 用过多线程嘛,线程切换的过程、切换开销是什么数量级

  • 多路复用的机制?select的时间复杂度,epoll的复杂度是多大?

  • 算法题:127. 单词接龙 - 力扣

6 腾讯-CSIG-腾讯云

一面

2021.08.13 60min (40min算法) 腾讯云 数据库相关(数据库优化、工具开发等、大数据支持)

  • 项目中最难的一点在哪里?
  • 对数据库了解吗?
  • 数据库主从复制有哪些模式?
  • MVCC说一下?
  • MySQL的索引介绍一下?
  • SQL语句中 select * from tbl where age > 18 and address = "北京" order by score,加索引需要考虑哪些因素呢?(age使用大于号,后续索引均失效)
  • Linux中netstat发现大量TIME_WAIT/CLOSE_WAIT状态是什么情况
  • 算法题:找数据流中第k大的数(手动实现堆,写了40min)

面试官业务介绍:关系型、非关系数据库研究,数据库数据迁移、智能管家;场景:业务开发、数据库管控、升级、监控告警、内核开发修改。CynosDB/TBase/TBSQL

二面

2021.08.19 60min 腾讯云 数据库相关

  • 详细介绍一下某个项目
  • 项目:所有节点的数据都会汇聚到一个节点嘛?采集的数据量有多大?(需要具体一个数据)
  • 项目
    • 汇聚节点怎么部署的?组网,拓扑结构?如果一个节点坏了怎么处理?怎么判断一个节点啊是不是坏了(有的节点能收到心跳,有的不能收到心跳)?
    • 数据存储在哪里?做什么用处呢?
    • 项目的难点哪里?
    • 汇聚节点底下支持哪些协议?
    • 模拟系统是软件层面还是硬件层面的模拟?是使用的开源模拟器嘛?
    • 你的项目角色是什么?代码量有多少?
    • 汇聚节点的网络模型是什么?底层用的是什么?了解io多路复用吗?select/poll/epoll的区别是什么?(自己会写epoll写一个服务器嘛?ORZ不会)
  • Java的设计模式知道哪些?状态机模式了解过嘛?
  • MySQL事务的ACID特性是通过什么实现的?
  • MySQL在写缓冲区时数据库崩溃会导致数据丢失嘛?
  • MySQL底层索引用数据结构来做的?为什么不用二叉树?
  • MySQL有哪些索引?主键索引和非主键索引的存储方式有什么区别?
  • 线上排查故障,如果java程序占用内存比较高怎么排查?
  • 美团实习做的核心的事情介绍一下,(批量操作)除了线程池还有什么解决方法
  • 了解一些开源的组件
  • TCP/IP协议了解吗?TCP头部构成是什么?
  • telnet不通怎么排查问题(ping测试、端口是否开启监听、防火墙是否放行)
  • 算法:手写状态机模式、单例模式

三面

2021.08.21 16:00 40min

  • 算法题:手动实现浮点数的开方(二分法,但是小数处理没思路,换题)

    // 牛顿迭代法
    private double mySqrt(double num) {
        if (num == 0) {
            return 0;
        }
     
        double C = num, x0 = num;
        while (true) {
            double xi = 0.5 * (x0 + C / x0);
            if (Math.abs(x0 - xi) < 1e-7) {
                break;
            }
            x0 = xi;
        }
        return x0;
    }
  • 算法题:求二叉树的高度(递归、迭代法都写一遍)

  • 堆是什么?有什么特点?什么是完全二叉树?

  • 两个Java程序在运行时看到的地址是一样的,它们是怎么对应到不同的物理地址上的呢?(内存管理-页表映射)

  • TCP协议如何保证可靠性?

  • 在TCP服务端如果收到行为异常的包会返回什么包?(RST)

  • 数据库索引用什么结构?B树和B+树的区别是什么?B+树叶子节点之间为什么需要有双向指针连接?双向链表反映到MySQL中的什么特点?

  • 在学校中最有成就感的事情嘛?

  • 有接触过动手方面的事情嘛?开源?

  • 操作系统中为何划分用户态和内核态有什么区别?如何从用户态进入内核态?

可能还有一轮技术面试!!!

7 拼多多-服务端开发

一面

2021.08.14 16:00 60min 做首页商品推荐的

  • 介绍一下大规模物联网项目
  • 团队管理网站几个人做?登录认证怎么实现的?Token是否会过期?怎么实现过期时间?自己怎么实现Token到期失效(Redis缓存过期)。
  • 文章阅读统计在Redis里怎么实现的【还需要仔细思考一下这一点】,怎么持久化阅读量。
  • SpringBoot、MySQL是一个进程,他们之间是怎么通信的?两个进程在同一机器上怎么实现通信?
  • 写从操作系统的层面来说,用户代码怎么拿到MySQL的数据的呢?(网卡(收到数据触发中断)DMA(拷贝数据)-内核缓存区(唤醒用户线程)-用户线程调用read-从用户态陷入内核态并将数据从内核缓存区拷贝到用户空间
  • IDE上写完代码从编译到运行的整个过程是怎么样的?(javaclass机器码 或者 编译类加载类执行)
  • class的加载过程
  • 如果有两个包名和类名完全一样的类,可以同时加载吗?(不可以,只会加载其中一个,类的加载与jar的导入顺序有关。)、
  • 了解双亲委派机制嘛?
  • class文件是加载到jvm哪块内存区域呢?
  • 堆里面的内存是怎么回收的?(垃圾识别分代回收)
  • MySQL和Redis的存储应用场景有什么区别?(前者多读少些,后者多写少读)
  • MySQL和Redis的差异在哪里?
  • MySQL底层用什么进行数据存储?
  • 多写少读的场景用MySQL还是Redis比较合适?(Redis,因为MySQL在写入数据时B+树会分裂,且涉及到磁盘IO的随机读取,速度较慢)
  • 如果将MySQL或者Redis扩展到分布式的场景,需要考虑到哪些点?(SQL路由、数据合并、分布式事务、统计函数的跨库操作等)
  • 常见的哈希算法有哪些?(取余、)
  • 算法题:40min 给定Node{id, parentId, weight}数组[{1, 2, 2}, {2, 3, 1}, {4, 3, 5}],求以指定节点为根的所有子孙节点的权重之和weightSum

二面

2021.08.17 15:00 40min 做大数据处理的

  • 项目
  • MySQL和Redis的适用场景有什么不同?
  • MySQL底层怎么存数据?为什么B+树可以查找更快(从B+树的结构、好处来说)
  • 算法:二叉树BFS

三面

2021.08.22 17:00 30min 推荐平台(首页商品推荐)

  • 实习做的事情?为什么用线程池不用异步实现?异步和多线程的区别是什么?
  • 线程池需要包含哪些组件?线程池任务队列怎么实现?队列满会出现什么情况?
  • 简单介绍一下Redis?Redis的持久化机制介绍一下?
  • 说一下Java的垃圾回收机制?什么是GCRoot?为什么要分代进行垃圾回收?
  • 虚拟内存说一下?怎么把虚拟地址映射到实际的物理地址?
  • 用户输入密码登录的过程的完整过程(通信过程及其后端处理)?
  • 数据库连接失败后台需要怎么处理?
  • Java的异常体系说一下?父类方法抛出IOException子类可以抛出什么?

8 虾皮

一面

2021.09.01 45min

二面

2021.09.04 45min