一些后端开发的秋招面经

基本情况

练习时长两年半的渣硕练习生,会点 java,粗学了点 golang。
秋招也基本快结束了,奈何水平实在太次导致B和A两家连面试机会都没有;腾讯也挂了。除了实习转正以外也侥幸凭运气收获了一些其他公司的意向书。秋招不易,特来分享一下过来的这段时间面试遇到的一些问题,希望还没有上岸的 20 届的你能保持乐观,坚持下去一定会有满意的 offer;也希望早早的准备找工作的 19 届或者 18 届的你能从下面的一些问题里面收到一些启发。

好事多磨,祝大家好运 ~ ~ ~

顺丰 - 1

顺丰科技 - 大数据部门 35min

  • 自我介绍
  • 看你简历上有 kafka,那你介绍一下你的这个项目吧
  • 为啥用 kafka 呢?都做了什么改动?
  • Kafka 怎么保证一个 key 的有序性?
  • Hbase 设计 rowkey 的时候有哪些注意点呢?
  • 你理解的后端开发与大数据开发有啥区别?你更喜欢哪个呢?
  • 对比介绍一下 Java 和 Golang
  • 什么样的项目适合 Golang,什么适合 Java?
  • 100亿个范围在(0-128)的数字排序
  • 你懂 websocket 协议吧?这个协议如何保证双工通信时一方的消息被另一方收到?有序性呢?

腾讯 - 1

csig 60min

  • 实习项目相关的问题:25min

  • 写爬虫的时候如何解决环路问题

  • 如果你是网站开发人员,如何设置反爬虫措施

  • 服务器只允许 10 个线程的并发量,如何处理这些爬虫完成爬取10000个网页的任务

  • Go 语言相关:

    • waitGroup 的使用
    • 如何在waitGroup 的协程中实现一个协程失败,所有协程立刻终止
    • channel 与 goroutine
  • http 方法你知道哪些

  • 什么时候会出现 tcp time-wait

  • 压测场景,发出压测的机器存在大量的停在 time-wait 阶段的请求,怎么处理?

  • tcp 半链接的问题

  • mysql 分布式锁,可能的问题

  • myql 慢查询的排查,explaine 的结果各个字段都是啥意思

  • redis 缓存过期与删除策略

  • redis 事务:这个真不懂

腾讯 - 2

csig 45min

  • 从系统开发者的角度来说 32 位和 64 位系统的区别?
  • 指针是什么?
  • 32 位 64 位系统的指针有啥区别?
  • 怎么在一个编程语言里不用系统库判断出来当前系统是多少位?
  • 虚拟地址空间是什么?是怎么操作的?
  • 为什么两个进程获得同一块内存的地址,会得到相同的结果,原因?
  • mysql 的单点问题与主备的问题
  • mysql 主从复制的原理
  • CAP 与 BASE 理论
  • mysql 主从复制时如何保证强一致性?
  • 为什么有了 mysql 还需要 redis 呢?
  • redis 持久化?redis 的持久化可以保证强一致性吗?
  • 多态啥意思?C++的多态怎么实现的?
  • Java 多态,golang 的多态怎么做到?继承呢?
  • Golang 的优缺点
  • golang 协程之间的通信方式
  • 网络五层分层
  • tcp 与 udp 的异同
  • tcp 连接的可能受到哪些攻击
  • 你是怎么理解 tcp 半连接与全连接
  • socket 的 accept 什么时候回返回呢?
  • select 与 epoll
  • 简单的算法题:如何实现一个开根号的函数? - - > 用二分法
  • 怎么设置二分法的终止条件
  • kafka 的 partation 的概念
  • kafka 的消息有序性
  • 你实习期间遇到了什么挑战?怎么解决的

腾讯 - 3

csig 40min

  • 自我介绍
  • 讲一下你的实习
  • Spring 和 Mybatis 各用的什么版本???还能这么问的吗,。。。
  • Spring 有哪些设计模式,举例说明
  • Spring 的 AOP 指的是什么?是怎么实现的?
  • 你是如何理解 MVC 的?
  • 详细说明一下动态***
  • mybatis 在提升数据库访问的安全性上面做了哪些工作 ?
  • 啥是 SQL 注入?mybatis 是如何处理的?
  • 你的这个 java web 项目是怎么分层的?与前端是怎么交互的?
  • java 的序列化的过程?为啥要序列化?
  • java 如何创建一个线程,哪种方式比较好?
  • list, map,set 有什么区别?
  • Collection 与 Collections 有什么区别
  • redis 为什么速度快?
  • redis 的吞吐量知道吗?自己测过吗?
  • kafka 的使用场景

猿辅导 - 1

50min

  • java int 类型的最大值:2^31-1

  • jvm 垃圾回收的时机

  • 为什么要划分老年代与新生代

  • 两个年代的回收算法有什么不同

  • 如何判断对象是否应该被回收

  • 遇到内存泄露怎么办?

  • 遇到栈溢出怎么办?什么情况会到是栈溢出?除了无限递归呢?

  • Tcp 三次握手,四次挥手

  • 为什么三次握手,为什么四次挥手

  • get 和 post 的区别。从语义上说呢?

  • 你理解的 REST 是什么?

  • 算法题:一个单链表按照正负拆分成两个链表,并返回各自的第一个节点:

  • 实习的项目

猿辅导 - 2

50min

  • 算法题 1:求两个递增数组中重复的元素
  • 算法题 2:将 n 个有序递增的单链表合并成一个有序递增的单链表
  • 你理解的 jvm 是什么样的?
  • JVM 的垃圾回收
  • Full GC 一定比 Minor GC 的速度慢吗?
  • 类加载,为什么要设计这样的双亲委派模式?
  • 如何理解堆空间是线程共享的这个概念
  • java 线程有哪些状态?
  • 如何唤醒一个阻塞状态的线程
  • wait 与 notify
  • 你是如何理解线程池的?
  • 线程池的核心线程数与最大线程数
  • synchronized 关键字的理解
  • CAS 的理解
  • 原子类的理解

猿辅导 - 3

现场三面 60min(面试体验最差的一次)

  • 面试官先自我介绍了一下自己的部门和工作内容,发现跟我实习的内容特别一致,就开始聊了很多实习的内容
  • TCP 与 UDP 的
  • CDN 的理解
  • 你在学习计算机基础课程的时候遇到过哪些困难?
  • 写个题吧:实现字符串的 split 方法,不能用集合类以及高级数据结构,算法复杂度尽可能的低
  • 第一遍我用 stringbuilder 实现的 split ,面试官不满意,问 stringbuilder 为什么比 string 在拼接的时候效率高
  • string 为什么要设计成不可变的,为什么要弄一个字符串常量池的jvm中呢?
  • 为什么 1.8 常量池移到了堆空间?
  • 既然常量池放到堆里面有这么多的好处,为什么1.7及以前不放到堆呢??????(还能这么问?????)
  • 你说 string 在java 里面不可变,那对于 用户密码 这种长度不一定的场景要怎么处理呢?????

网易有道 - 1

55min

  • 算法题 1:一个 全是 0 和 1 的矩阵,能否找一条从左上到右下的全是 0 的路径:回溯法
  • 算法题 2:找到一个全是 0和 1 的字符串中 最长的交错子串。交错的意思是: 01010101 这样
  • 写多读少的场景使用哪些集合类
  • 要求元素按照一定的顺序取出,用什么集合类?
  • 多线程访问的情况下怎么处理?分多线程只读、多线程读写回答
  • 你怎么理解 ThreadPoolExceutor 的?
  • 高负载的服务器应该用哪种线程池?低负载的呢?
  • 什么是阻塞队列?
  • 你说的这几种线程池在使用时有什么要注意的 地方吗?
  • spring 的设计模式
  • autowired 注解是做什么的?
  • 一个dao接口有两个相同实现的时候怎么区分
  • spring 碰到循环依赖怎么办?
  • MySQL表里有个记录时间的字段,经常要对这个时间进行范围查询,这时候是否适合建索引呢?
  • 又有个字段是记录这一行信息的状态的,只有 0-3这几个取值,这个字段适合建索引吗?
  • linux 如何杀死线程?
  • cpu load 知道吗???好像是这么问的,我没听清
  • git pull 与 git clone 的区别

网易有道 - 2

现场二面 70min

  • 算法题 1:两个线程交替打印奇数、偶数,一直打印到 100.
  • 算法题 2:实现一个阻塞队列
  • 算法题 3:一个 1TB 的记录 ip 地址的大文件,8G 内存的机器,找出出现频率最高的 N 个 ip 地址
  • 有两个并发/多线程的题,所以在检查代码的时候顺便问了一些这方面的问题:
  • synchronized 修饰不同方法、类文件的时候有什么区别
  • java 线程有哪些通信方式
  • wait 与 notify
  • TCP 如何保证传输的可靠性
  • TCP 如何保证传输的有序性
  • TCP 与 UDP 的区别
  • TCP 三次握手、四次挥手
  • HTTP 请求和返回的头部结构
  • HTTPS 建立连接的过程
  • MySQL 的隔离级别。幻读与不可重复读的区别
  • MySQL 的锁与 MVCC
  • 一张含有三个属性列的 5000W 行的表,怎么优化查询速度
    这里分别从:水平分表、索引构建、读写分离、引入 Redis 做缓存这些方面回答的
  • Redis 是单线程还是多线程?为什么这么做?
  • Redis 与 Mysql 的数据一致性
  • Kafka 的使用场景
  • Kafka 如何才能不丢消息:
  • Kafka 怎么保证消息的有序性?

网易有道 - 3

现场三面 60min

  • 面试官是做的东西跟我实习的业务场景有些重合,所以讨论了很多实习内容
  • 算法题 1:已知二叉树的前序和中序遍历的顺序,求这个二叉树后序遍历的结果
  • 算法题 2:一个存储 1TB k-v 数据的文件,150台 8GB 内存的机器,要求把这些 k-v 数据全部用hashMap 存储,怎么实现
  • 怎么看待你实习的公司?
  • 对比一下 golang 与 java

美团 - 1

现场一面 70min

主要集中的 Java 基础的提问,多线程与并发问的特别多,但是难度整体不大。

  • 画一下 java 集合类的体系结构,写出你知道的所有的集合类
  • ArrayList 与 LinkedList 的区别,使用场景
  • HashMap 的实现原理
  • 画一下为什么尾插法的时候,在多线程 resize 的时候会成环?头插法的时候为什么不会成环呢?
  • 除了成环,HashMap 在多线程的情况下还会有哪些问题?
  • fast-fail 出现的原因是什么?
  • 多线程条件下如果想使用 Map 结构,有哪些办法?
  • 多线程场景下的 List 呢? Queue 呢?阻塞队列与并发队列的区别。
  • CurrentHashMap 的原理。为什么 1.8 要修改实现原理?
  • synchronzied 关键字的实现原理,再详细的说一下 mutex
  • 画一下 volatile 关键字的作用效果
  • 用过线程池吗?线程池的核心参数是啥?线程池的增长策略
  • 在重负载的场景下应该用哪种线程池?
  • 这种线程池的阻塞队列是无限大的,当任务过多的时候会 OOM ,这时候怎么办?
  • Mysql 的隔离级别
  • mysql 的可串行化可以解决幻读的问题吗?MVCC 的原理
  • Spring 事务讲一下
  • spring mvc 的流程,servlet 是线程安全的吗,spring 的线程安全性你了解吗?
  • 你是怎么理解微服务的?
  • Redis 常见的几种数据结构?zset 可实现先按照属性 A 排序,A相同的情况下再按照 属性B排序吗?
  • http 的三次握手与四次挥手
  • kafka 为什么吞吐量高?
  • kafka 的零拷贝与 linux 的零拷贝一样吗?
  • kafka 怎么保证消息的有序性
  • kafka 会丢消息吗?

美团 - 2

现场二面 70min

都是基础的问题,但是回答的不好啊

  • 你实习的公司跟美团给你的感觉有什么不同?
  • 你怎么看待 Golang 这门语言?
  • 操作系统的虚拟内存
  • 为什么os 要设置一个分页机制?分段呢?
  • linux 进程的调度方式
  • 网络5层分层,各层分别有什么协议
  • 如何判断一个 ip 是否可达? ping,traceroute 其实都行
  • traceroute 命令的实现原理
  • mysql mvcc 的实现原理
  • 辅助索引与聚集索引,辅助索引的查询过程
  • sql 的执行顺序
  • 算法题 1:如何判断一个链表有环?
  • 算法题 2:已知一个链表有环,如何确定环的入口位置
  • 算法题 3:写一个快排吧,用数学方式推导快排的时间复杂度
  • 为什么快排会有空间复杂度?你是怎么理解调用栈引起的空间复杂度的?
  • 后边就是实习的项目的相关问题了

小米 - 1

海外MIUI 40min

  • java 里面 map 都有哪些
  • hashmap 的原理
  • 除了链表法,还有哪些解决hash 冲突的方法
  • 如果让你设计 hash 函数,你会从哪些方面进行考虑和设计
  • synchronzied 与 lock 的区别
  • JUC 包下面都有哪几类并发组件?
  • AQS 的原理
  • 公平所与非公平锁
  • 如果让你设计一个线程池,你会怎么设计?
    其实这个问题可以说的方面很多:参数的配置、增长策略、拒绝策略、不同场景下的线程池的配置方式
  • JVM 的内存分区
  • G1 收集器与 CMS 收集器的区别
  • 有做过 jvm 的调优吗?没有。。。
  • mysql 的 acid 是什么?是怎么实现的
  • mysql 的主从复制是怎么实现的
  • redis 与 mysql 的数据一致性怎么保证
  • 算法题:如何判断两个链表有交点
  • 你觉得 golang 有一天可以取代 java 吗?

小米 - 2

海外MIUI 40min

  • JVM 内存分区
  • 如何判断死锁
  • 我创建了一个 List ,然后不断往 lsit 里面 add 元素,最终出现了 OOM,那么是哪个区域 OOM 了?
  • Kafka 如何不丢消息
  • 你听说过分布式的一些协议吗?
    这里我说了 CAP、BASE,以及简单的介绍了一下几种分布式一致性协议:paxos,zab 等
  • redis 是怎么做持久化的
  • golang 与 java 的区别在哪?golang 有什么优势吗?
  • rpc 的实现原理?与 REST API 相比有什么区别吗
  • 算法题:写一个生产者-消费者模型

快手 - 1

50min

  • 实习项目相关 - 10min
  • JVM 内存分区
  • 堆在分配内存的时候会出现冲突吗?怎么分配内存空间
  • JVM 的线程与操作系统的线程有什么区别?与进程呢?
  • 一个 JVM 的线程在 OS 中的存在形态是怎么样的?是一一对应的吗?
  • 包装类是什么?什么时候回用到包装类
  • Integer A=new Integer(1),Integer B=new Integer(1),那么 A==B 吗?
  • 看过哪些 JDK 的源码?
  • AQS 讲一下。
  • AQS 的等待队列里的节点都是什么样的状态?先自旋,后阻塞等待前置节点唤醒
  • Kafka 生产者是怎么调优和配置的?
  • Kafka 的 leader-follower 模型,leader 是怎么***的?
  • leader 与 leader 之间会通信吗
  • 网络的五层模型。
  • TCP 三次握手与四次挥手?
  • 当你访问 www.baidu.com 的时候,说一下详细的过程,越详细越好。
  • 在数据链路层,是怎么传输消息的?
  • 通过 127.0.0.1 和 本机真实 IP 地址发送消息,有什么区别?
  • IP 环路或者路由环路知道吗?
  • TCP 积压知道吗?
  • 算法题:用 Java 实现一个最大堆。

快手 - 2

30min(其实是技术面, 不是 hr 面。。。)

  • 介绍一下你的实习
  • 你们部门的具体业务场景?
  • 实习公司给你的感受?工作强度、好的地方、不好的地方
  • 你对你的 leader 有什么看法
  • 你们部门有划水的人吗?
  • 你对短视频业务的理解
  • 你对 Golang 的理解,与 Java 相比呢,你更倾向于哪一个?
  • 为什么想先做业务
  • 你是怎么看到新业务与旧业务的?
  • 当你负责的新业务因为一些原因被 kill 了,你怎么看?

京东 - 1

京东商城 15min(对,你没看错就是只面了不到15min)

  • 介绍一下实习的内容
  • 实习项目:客户端上报的数据为什么不能直接被后端使用
  • 实习期间遇到了哪些难点
  • JVM 内存分区
  • JVM 类加载过程
  • mysql 数据库调优,说一下你会从哪些方面做?
    水平分表、垂直分表、读写分离、引入 redis 做缓存、合理规划索引、使用 数据仓库等
  • currentHashMap 的实现原理
  • sycnhronzied 实现原理,锁升级

京东 - 2

京东商城 15min(是的,你又没看错,就是又面了 15 min)

  • 实习项目
  • 你这个系统的数据量有多大
  • 为什么要引入数据仓库,不用 mysql?为什么不用 es 呢?
  • 当这个表变得更大之后,你准备怎么优化这个表的读写速度呢?
  • java 线程池的核心参数,为什么要引入线程池呢?
  • wait 与 sleep 方法的区别
  • synchronzied 与 lock 的区别?各自的实现原理
  • lock 有公平所与非公平锁,共享锁与独占锁,它们都是怎么实现的?
  • cookie 与 session 的区别
#面经##Java工程师##校招##猿辅导##顺丰科技##美团#
全部评论

相关推荐

10 97 评论
分享
牛客网
牛客企业服务