大四实习生”都四面成功拿到字节跳动 Offer 了,你还有什么理由去摸鱼?
博主大四实习,投的是字节 Data 的后端开发实习生,base 杭州。
时间线:
4.12 投递
4.13 安排简历筛选
4.14 安排面试
4.19 16:00 一面
4.22 16:00 二面
4.23 8:00 三面
4.23 16:00 HR 面
4.23 16:30 Offer
一面
先做了自我介绍
问论文情况(简历写了)
做的是什么
主要负责了哪些工作
数据集是哪里来的
带来的提升是以什么为基线去比较
来做个题吧:有向图判断是否有环
写了个 DFS,写完示意面试官还剩建图的部分,面试官说建图可以不写
提问代码细节
我的代码是用邻接矩阵存的图,提问还可以用什么结构存?(邻接表)
再来做个题吧,面试官挑了一会儿以后说感觉这个题你应该也能写出来,就不做了。
多线程相关:
有遇到过多线程的情况吧,假设 A 线程和 B 线程都想访问一个资源,如何保证线程安全?(答:加锁)
有些线程只想读资源不想写资源,如果简单粗暴地加互斥锁的话性能不太好,有什么办法优化一下?(答:只对写操作加锁,读操作不受限制)
多个线程,部分是写,部分是读(举例:A 线程写、B 线程读、C 线程写),他们的执行顺序应该是怎么样的?(这一块一直没有抓住面试官想问什么,感觉答的不好)
挑一个项目来介绍一下
讲到了项目中做的一个改进,跟缓存有关。
Redis 的表结构有了解吗?(dict 存各项数据,expires 存过期时间)
爬数据这个环节是怎么定期更新的?是定期自动执行还是需要你手动去操作?
一台服务器的话,会有负载压力吗?如果要承受更大的 QPS,你还有什么想法去优化吗?
数据结构你熟悉吗?(答 特别复杂的数据结构了解不深,但基本的数据结构还是比较熟悉的)面试官说那我就不细问了。
我们还是来做一道题:面完查了一下是 LeetCode 81。
不用写,说思路就可以。
之前没接触过,面试官引导了一下,想了一会儿,说了一下大致思路
问了一下细节,又想了一会儿,面试官说今天我们面试蛮久了,开始反问环节。
反问环节
问部门技术栈,面试官说我是别的部门来交叉面的,我到时候不一定是在他的部门,然后介绍技术栈是 C++/Go,少量 Python 写一些脚本。
问面试官他这边知不知道大概什么时候会有结果,面试官说他这边写面评,后续需要 HR 安排。
面试官介绍了一下他这边部门的情况。
面试官看起来挺年轻的,很友善很有耐心,面试体验贼好。总体感觉问的不太八股,还是比较靠理解。
二面(1h)
自我介绍
介绍项目(实验室应用平台)
有几个实验室
登录的方案是怎么做的
签退的功能是怎么实现的
如果有两个用户想要同时预定最后一个座位,如何保证不出错?
Redis(项目中用到了)
有设置超时时间吗?
Redis 的超时是怎么实现的?(答了下表结构)
Redis 超时的时候它是怎么操作的,是扫整张表吗?(答 惰性删除和定期删除)
具体的策略有哪些,比如你有了解过 LRU 吗?(答了 8 种淘汰策略)
你知道 LRU 怎么实现吗?(答双向链表,双向链表+HashMap)
提到了 HashMap
哈希冲突怎么解决
红黑树的查找效率是多少
哈希查找效率是多少
介绍另一个项目
爬虫是怎么做的
数据存在哪里
如果用户读文件的时候,程序刚好在往里面写数据,怎么保证正确性?
有用过 Go 吗?(了解过一些,但没用过)
接触过 RPC 吗?(了解过,但没实际写过)
知道 ProtoBuf 吗?(简单说了一下)
我们来写个题吧
树状 DP
说了一下大概思路,但是状态转移方程写不出来
面试官很耐心的引导了一下,但最后还是没写出来,慌的一批
反问环节,问了下部门技术栈
问我是否只能接受 base 杭州
感觉二面面试官抓问题很精准,面完真的觉得自己凉了,结束半个小时以后 HR 电话通知三面。
三面(1h)
什么时候开始接触编程的
你的专业不是 CS,对计算机基础了解程度如何
实习时间怎么样
来写个题吧(实现一个 HashTable,要求可以运行)
如果让你写一个 HashTable,你觉得需要有哪几个 API
面试官提示我先把 API 写了(先把 API 定下来,稍后写具体实现),然而我没 get 到面试官的意思,以为是要我先写核心部分代码。慌的一匹。
之前没在牛客上跑过自己定义的类,卡了一会儿问面试官能否本地 IDE 跑给他看,面试官说不行,考验一下解决问题的能力。最后还是摸索出来了。
跑了几个基本的测试样例。
面试官要求和 Java 自带的 HashMap 对比一下。
面试官要求随机生成一些 TestCase 来测试正确性,这块写的不是很好,跟面试官说了一下,面试官说你知道问题在哪儿就可以。
反问环节,问面试官从今天的表现来看,还有哪一块需要提升。
面完又感觉自己凉了,结束一个半小时以后 HR 电话通知 HR 面。
HR 面(10min)
自我介绍
什么时候可以来实习,可以实习到什么时候
有没有考研打算
有没有在看其他公司的实习机会
之前三轮面试的体验如何
面试官有没有介绍过部门在做的工作?
看你之前有一些研究的经历,是对这些比较感兴趣吗?
反问环节,问了下后续流程。
面试题文档分享
下面先给大家上一个总的目录大纲,基础的东西就不进行过多的赘述,我们将会从 JVM 说起,同时由于每篇的内容过多,我们也只说重点,太过基础的内容谁都会,我就不多敲字浪费大家的时间了!
JVM
多线程与高并发
Spring 源码
Spring 容器初始化过程、Spring Envirnment 原理、Spring 监听器、Spring lOC 原理、Spring AOP 原理、Spring Boot Starter 原理、Spring 高级运用
Neety 与 RPC
微服务
服务注册发现、API 网关、配置中心、事件调度(kafka)、服务跟踪(starter-sleuth)、服务熔断(Hystrix)、API 管理等等
网络
OSI 和 TCP/IP 对比、应用层协议讲解、传输控制层及 SOCKET、网络层及链路层原理、NAT 及路由规划、TCP/IP 原理、TCP 三次握手/四次挥手、HTTP 原理、CDN 原理等等
负载均衡
RabbitMQ
KAFKA
KAFKA 框架原理、KAFKA 特性及实现、KAFKA 文件存储机制、KAFKA 分区及可靠性、KAFKA BROKER 特性、KAFKA 高效性相关设计、KAFKA CONSUMER 特性、KAFKA PERDUCER 特性、KAFKA OFFSET 维护方案、KAFKA STREAMING
MySQL
基本语法、索引的实现机制、索引的数据结构、索引的分类、索引与存储引擎、索引的设计、索引的优化、ACID、事务的实现原理、UNDO LOG、REDO LOG、BIN LOG、MVCC 和二阶段提交、共享锁、独占锁、排它锁、自增锁、间隙锁、临键锁、SPI、DRIVERMANAGER、CONNECTION、STATEMENT 和 PREPARESTATEMENT、RESULTSET、反射
Redis
REDIS 部署、REDIS 的 VALUE 类型、REDIS 的发布订阅、REDIS 的 MODULE 与布隆过滤器模块、REDIS 的 LUA 脚本、Redis 底层原理、主从集群锁、哨兵集群锁、红锁
由于文章篇幅有限,PDF 的内容又很多,全部手敲下来很累......所以需要阅读阅读学习的,大家拿到手之后自己学习吧,楼主真的打字打累了。同时,想要获取直接添加小助理 vx:mxzFAFAFA 来获取~
版权声明: 本文为 InfoQ 作者【学Java关注我】的原创文章。
原文链接:【http://xie.infoq.cn/article/0eff2b8b282464bd088c968ba】。文章转载请联系作者。
评论