🙈我的内推码:2H9GKFH
🔥字节跳动2021春季校园招聘开启啦!!!
🌈包含暑期实习和校招补录两个部分
💥飞书业务线专属内推链接: https://jobs.toutiao.com/h5/recruit/es-index/?token=2H9GKFH
✌️进面试的小伙伴可以私聊我加微信zb200233,请备注一下ACWing,帮查进度,接受咨询,一定及时回复~
😂😂同学内推完可以在下方回复一下,Mark一下~不然容易忘记自己找谁内推的。。因为我以前就老忘hhh
研发面试的问题的话可以参考我之前发的帖子,希望对大家有帮助哈~
面经传送门 https://www.nowcoder.com/discuss/511499?source_id=profile_create_nctrack&channel=-1
直接附上吧,省得麻烦了hhhh此文主要是总结下我之前的Java后端春秋招之旅,如果能为学弟学妹带来一丢丢帮助,我也会很高兴~首先来介绍一下我的个人情况,我本科是南理工自动化专业,硕士是南理工双控专业,害 都在南理工这么多年了呢,这个学校没有给我面试带来优待,但也足够让我能够通过简历筛选哈哈哈。应女朋友补充(我们南理工好歹是江苏top! hhh)然后我的实验室方向主要是烂大街的图像处理,工作方向的话又是烂大街的java后端,害 果然是一个盲目的人,本人没有 项目、没有实习,优点是成绩比较好,有一些水水的比赛( 项目展么,懂的都懂hhh),性格的话比较偏懒狗,虽然最后还是去了互联网,此文主要是从就从 春招 、秋招、常见面试题这几方面谈的,希望学弟学妹们能把握春招实习!当然同届的同学能抓住补录的尾巴也是极好的~加油加油
春招历程
我是从2月份开始准备,一开始就看完了java基础,虽然基本看完没啥印象了。计网和数据结构的话都是本科学的了,没啥印象了sad,然后就开始看 面经了,这时候高频的 面经还都是去年总结的,所以我看的 面经还挺有大局观的hhh,就老是看到牛友说要先打好基础,然后再狂刷 面经,当时的我错误的估计了我菜的程度,居然准备开始先修炼内功,把书先看扎实了。。。再回头来刷 面经,于是我开始了悠闲的看书之旅。。。真是恐怖的想法hhh,看了一段时间计网、操作系统、数据库后,时间来到3月份了, 牛客网找实习的帖子多了起来,这时候一个更恐怖的想法就出现了。。。我要去找实习,那会刷了一丢丢剑指,我就开始投简历了,真是佩服那会的一腔孤勇,像个傻子一样。其实现在想想 春招找实习是很幸福的,基本都不用笔试就能面试真的很友好, 春招的 面经我就列一下,秋招的我就不一家一家列了,汇总了一下~依稀记得第一家给面试机会的是 七牛云,一开始我以为不是大厂应该难度还好吧。。还好吧。。。后来我被毒打以后才发现我是弟中弟,这应该是最惨的一次面试了。。我大概回答了15个不会。。你懂我的意思吧。吧。。。所以大家肯定比我当时强的,一定可以的~
好了上面经,七牛云篇
1. 常见的密码加密算法
2. Redis做缓存的原因
3. B+树、B树、红黑树、二叉树做索引区别
4. B+树和hash索引
5. Mysql主从复制
6. Mysql读写分离
7. 怎么利用索引来进行查询
8. 进程 线程 绿色线程
9. 怎么优化IO性能
10. 运行程序为什么可以超出内存容量
11. 容器和虚拟机有什么区别
12. OSI七层模型
13. NAT
14. ++是线程安全的吗
15. java是动态还是静态的
16. 为什么要编译成字节码
17. 设计模式
嗯。。。确实是给当时年幼的我好好上了一课。。。我差点就准备躺平去研究所了。。。。又低效率学了一个月,4月份出击~
Aibee
1. leetcode 34
2. Top K
问了几个问题后,小哥哥开始让我直接写代码了,年幼的我第一次手撕代码。。。卒
快手
1. 手写单例模式
2. 判断链表是否有环
3. 找出链表的入口节点
4. 两个字符串的最长公共子序列
5. 反转链表(递归非递归)
面试老哥人不错的,发现我稀烂的基础后话不多说,写题写题,有了第一次的经验,这次的我居然写出来了4个。。。可能基础太拉闸,还是没能突破第一轮
于是感觉看书太慢了,开始看 面经速成,准备应付一波,通过个第一轮,这时候已经差不多5月份了吧,心态也出现了一些微妙的变化,之前觉得自己很菜,过不了也很正常,挺无所谓的,但这会本科舍友上岸了,压力就来了hhh人果然还是要被push
问境
1. 数据库事务有哪些特性
2. Mysql事务的是实现原理
3. Mysql索引
4. Mysql隔离级别
5. 进程和线程
6. TCP/IP协议四层模型
7. 三次握手、四次挥手
8. TCP和UDP区别
9. 流量控制、拥塞控制
10. aop含义
11. aop的实现原理
12. 快排的思路
13. 无向图的复制
这次因为已经5月份了,我普通题其实已经背了一些了,应付小公司问题不是很大,1-12基本答得还可以,感觉就稳了。。。结果这次手撕不会,图永远的神。。。话不多说继续复习
一晃5月底了,剑指刷完了,开始 leetcode。。基础继续复习,然后学校就准备开学了,封闭管理,思考了一下,决定还是去学校吧,到了学校迎来了第一战58同城,我投的这些其实都是我不想去的,因为我真的很怕面试留记录hhh,所以这些公司看上去挺偏的,南京上海的我一个没投。。。准备再酝酿酝酿。。
58同城
1. 数据库读写分离原理
2. 事务中原子性的实现
3. Redis的了解
4. 线程池中的参数
5. 线程池初始化后有线程吗
6. private
7. spring ioc aop
8. hashmap源码
9. volatile
10. 单例模式手写
11. top k
这是一个女程序员面的我,第一次遇到女面试官呢,面完就说我过了hhh,不错不错。。。但说出来你可能不信,现在9月份了,我还在等二面呢,这真是一个悲伤的故事。。。。到这边感觉我已经有点感觉了, leetcode100题,基础内容计网、操作系统、mysql、spring、java基础、java并发、jvm的话基础题已经了解了
然后这时候我上岸了顺丰实习,我人生的第一个实习offer吧,不错不错,然后还拿了一些金融证券的。。。虽然我最后一个实习都没去。。。那么这究竟是为何呢,请看下一集《秋招》
秋招历程
6月份到了学校以后,突然发现VIVO提前批开始了,我的天,怎么会有公司这么早啊啊。。。当时心态都崩了,难道今年因为疫情都这么早的吗,后来才知道,不不不,只有VIVO这么早滴~抱着试一试的想法,我就投了一波VIVO,这边吹爆VIVO效率,笔试、技术面、Hr面、发offer一周结束,于是我就拿到了人生第一个sp offer,这运气也太好了吧,还是在南京,我这会就感觉特别满意了,想结束秋招了,顺丰自然也是不想去实习了hhh,可能这就是懒狗吧。。。唯一有一些遗憾的就是,这个岗位不是java后端的,是安卓开发的,然后调研了一下 客户端的前景,感觉技术栈不是很稳定,要入行的话还是要想想清楚的,但当时当然是喜悦大约忧虑的,觉得好歹是sp,难度又比java后端小好多,有一种赚到了的窃喜hhh。之后的几天题也刷得少了, 面经也不怎么整理了,心情舒畅,逛逛 牛客,养老式复习开始了。之后看看 脉脉之类的,就感觉可能私企的话确实没有国企适合自己吧,而且这时候的技术配上双南理工的学历,进国企基本上还是挺稳的,所以这段日子过得还是很开心的,顺便看看行测啥的,为银行、事业单位考试做做准备,岁月静好,感觉这样一直到秋招结束的话应该是惬意的。。。。但大概人就是奇怪的动物,等到7月多的时候,周围陆续有人上岸了大厂,因为做技术的嘛大厂其实都听过的,肯定也都想试试的嘛,于是就投了几个大厂的后端,不出意外 百度上海有点难的简历没过;然后字节DNS解析伪代码没写出来、挂; 滴滴sp专场三面挂、其实表现还可以(小声bb) 排序挂了、大家确实很强;然后 网易云提前批笔试3/4笔试没过,这时候面试官的评价一般都是基础还可以,广度不太行,于是7月底吧,我又重新进入了互联网复习模式hhh
我的 算法水平一直还可以,因为我是跟着大雪菜学的,在8月份我把他B站的 刷题课,跟着一起刷了一遍,确实按块刷的效果是非常显著的,我后来的面试手撕中,貌似就 快手和 华为手撕翻过车hhh强烈推荐大家跟着y神学,y神我永远滴神!
然后技术栈的话在这段时间,我把 redis和kafka仔细看了看,增加到了简历中嘿嘿,可一定要很熟悉再加嗷~然后基础的话,因为 面经其实复习得还可以了,巩固的话意义一般吧,这段时间主要就是看书,我看的书有《高性能Mysql》、《Redis设计与实现》、《Kafka技术内幕》、《Spring技术内幕》、《深入理解java虚拟机》、《java并发编程的美》、《计算机网络自顶向下的方法》,感觉纯看 面经知识点还是不够连贯,我这边的话一般一周面一次,然后一周的话,6天在看书写题,1天用来刷 面经,然后面试,然后再6+1这样,无限循环,无限月读hhh
现在的话 vivo(安卓)、oppo(java后端)、 中兴(不懂)、 贝壳(java后端)、字节(后端)过了, 滴滴等意向书, 华为等主管面, 美团等三面, 京东等后续;就是一步步打怪升级的过程,bat的话可能缘分还是没有到,作为一个懒狗已经比较满意了,准备面完 华为和 美团就结束了嘿嘿~感觉是经典的半场开香槟哈哈哈哈
面试真的是很玄学的,感觉就是缘分到了,实力到了就过了,拿 滴滴来说吧,这次的三面就很玄幻,太逗了,面完第一轮,那个面试官说,你特别适合我们这啊,我心里想(兄弟,你又不是主管,别给我画饼啊。。你难道还有权利直接要我的咯。。)然后再大家都在等待二面的时候,我直接二面面试官秒过来面我了。。。15分钟结束聊聊天,然后三面面试官说,他们说有个xx很符合我们要求,我直接来了。。。然后又是唠唠嗑写个题结束了,说过了,等消息就行。。。真是玄幻。。。(一面面试官我错了,你地位还是高的hhh)最后我总结一些常见题吧,大佬们珠玉在前了,我就稍微写一写吧
常见面试题
计算机网络
1. 网络模型和协议
2. TCP和UDP的区别
3. UDP如何保证可靠
4. TCP、UDP、IP报文格式
5. 三次握手四次挥手
6. TCP粘包
7. TCP 协议如何保证可靠传输
8. TCP的流量和拥塞控制
9. ARQ协议
10. 从浏览器中输入url之后发生了什么
11. DNS服务器基本流程
12. http get和post的区别
13. cookies和session的关系
14. 服务器怎么知道客户端已经发送数据完毕?
15. 数字证书、签名
16. HTTP1.0、1.1、2.0之间的区别
17. HTTP状态码
18. http请求报文有什么?
19. http缓存
操作系统
1. 进程间通信的方式
2. 线程同步的实现方式(抛开语言,操作系统里)
3. 进程调度算法
4. 死锁的必要条件和处理方法
5. 银行家算法,死锁
6. 虚拟内存
7. 常见的几种内存管理机制
8. 快表和多级页表
9. 页面置换算法
10. 磁盘调度算法
11. 阻塞式io和非阻塞式io的区别
12. IO多路复用,讲下select、poll、epoll
13. NIO、BIO、同步和异步的理解?
14. 协程呢?
15. 进程在自己虚拟地址空间都是什么
16. 僵尸进程、孤儿进程
Mysql
1. 数据库事务有哪些特性
2. 脏读和幻读的区别是什么?
3. 可重复读的隔离级别下如何保证不幻读
4. 非关系型数据库和关系型数据库的区别
5. Mysql mvcc?
6. 乐观锁与悲观锁的区别
7. 数据库范式讲一下
8. 主键是什么?
9. 内连接 左连接 右连接
10. union与union all的区别
11. Explain
12. 最左前缀
13. B+树的结构?与二叉树的区别?与B树的区别?
14. Hash索引和 B+树索引优劣分析
15. 索引用B+树而不用红黑树?
16. 数据库怎么优化
17. 什么时候不该使用索引?
18. 聚集索引和非聚集索引的区别
19. Mysql知道几种存储引擎,有什么区别
20. 覆盖索引
21. 主从复制、读写分离、分库分表
22. Mysql锁划分
23. Mysql架构
24. in和exist区别
Redis
1. Redis有哪些数据结构
2. String类型的底层实现:
3. Hash字典类型
4. Redis渐进式rehash 为什么
5. Redis中zset的内部实现跳跃表 为什么
6. Redis支持事务吗
7. Redis单线程还是多线程,为什么?
8. Redis单线程为什么还并发量那么高
9. Redis为什么快?
10. 缓存穿透以及解决
11. 缓存雪崩以及解决
12. 缓存击穿以及解决
13. redis内存满了怎么办
14. Redis持久化的方法
15. AOF重写
16. redis主从结构
17. redis哨兵
18. Redis集群
19. 集群是如何判断是否有某个节点挂掉
20. 分布式锁作用
21. 一致性哈希
22. 缓存与数据库双写一致
Kafka
1. Kafka队列与发布订阅
2. 介绍下kafka都有哪些组件
3. kafka是怎样保证全局有序的 Kafka如何保证消息的消费顺序
4. kafka 有哪些保证消息不被丢失的手段 (Kafka如何保证消息的可靠性)
5. kafka如何防止消息重复消费? kafka保证消息唯一
6. kafka副本机制 (Kafka如何保证高可用)
7. ISR:为何用
8. Kafka消息是采用Pull模式,还是Push模式?
9. Kafka的特点
10. Kafka的实现原理
11. Kafka存储机制
12. kafka写入数据时的高性能?
13. kafka如何保证高吞吐 kafak为什么效率比较高
14. kafka如何作为系统通知的过程
15. Kafka一致性
16. 多个消费者能不能消费同一个分区
17. 除了Kafka还知道哪些消息队列?
基础分布式和大数据场景
1. 分布式锁
2. 分布式事务
3. CAP、BASE
4. 分布式ID
5. 分布式协议
6. URL黑名单问题:判断值是否已经存在于集合中
7. 20亿个32位整数中出现次数最多的数:
8. 40亿个非负整数没出现的数:
9. 找到100亿个URL重复的URL
10. 40亿非负整数出现两次的数:
11. 大数据的中位数,桶排序:
Java集合
1. List、set、map三者的区别
2. ArrayList和LinkedList的区别
3. HashMap源码说一下(细说,从初始化到put、get、扩容、红黑树、1.8做了哪些优化)
4. Hashmap链表要转红黑树,为什么长度超过8转
5. 多线程Put可能发生的问题
6. ConcurrentHashMap的实现
7. Concurranthashmap和Hashtable的区别
8. concurrenthashmap的 size如何计算
9. LinkedHashMap,如何在o(1)的时间里面删除一个元素
10. Hashset和hashmap的区别
11. HashTable与hashMap的不同
12. TreeMap
13. List遍历时删除元素
14. 快速失败(fail—fast)、安全失败(fail—safe)
15. CopyOnWriteArrayList
16. HashMap遍历时删除元素
Java基础
1. java有几种基本类型,分别是什么?String是基本类型吗?
2. Final、 static 、this、super关键字?
3. final,finalize, finally有什么区别
4. String、Stringbuffer和StringBuilder的区别
5. Equals方法重写时为什么要重写hashcode方法?
6. ==和equals的区别
7. 接口和抽象类的区别
8. jdk和jre的区别
9. 深拷贝、浅拷贝
10. Java中为何要有泛型?
11. 方法覆盖与重载的区别?
12. Java类初始化顺序
13. java的三大特性 面向对象的特性。(封装、继承、多态) 的含义
14. 多态的实现原理
15. Java有这些权限:public,protected,private。如果不写,那默认权限是哪个?
16. Java中类修饰符、成员变量修饰符、方法修饰符的种类与类别?
17. 什么是内存泄漏?Java中存在内存泄漏吗?
18. RuntimeException有哪些,提到了空指针异常,问怎么避免空指针异常
19. 反射了解吗,应用场景
20. Jdk动态代理原理
21. Arrays.sort()的实现?
22. Java8 有什么新特性
23. 内存模型
24. 创建对象的几种方式
25. 注解元、标准、自定义
26. 注解原理
27. Java I/O的种类
28. 怎么实现序列化与反序列化
29. 5种IO模型的区别
30. Object方法
Java并发
1. 什么是线程?
2. java线程通信同步有几种方式
3. 多线程共享数据
4. 信号量和互斥量的区别
5. 线程是怎么实现的 线程有哪些方法?Wait()是线程的方法吗?
6. wait和sleep的区别
7. 线程实现各有什么优缺点?
8. 要用start()方法区执行run()方法而不是直接调用run()方法
9. 线程有几种状态 上下文切换
10. ThreadLocal是什么
11. 就绪状态和阻塞状态有什么区别 两者可以互相切换吗
12. 进程和线程切换开销对比
13. Java中的锁
14. CAS的含义 ABA问题
15. java volatile关键字
16. 说一下volatile 指令不可重排 怎么不可重排,为什么不可重排,重排会发生什么
17. Volatile关键字和synchronized关键字
18. synchronized三种使用方式:
19. synchronized的了解
20. synchronized锁状态转换
21. synchronized实现原理?
22. synchronized和Lock的区别?
23. AQS,基于AQS实现的lock, CountDownLatch、CyclicBarrier、Semaphore介绍
24. CyclicBarrier 和 CountDownLatch 的区别
25. 非公平锁和公平锁
26. JUC原子类
27. 两个线程读,一个线程写,如何实现,不用锁可以吗
28. 线程池作用、参数、有几种
29. Executor
30. workQueue:
31. 拒绝策略有几种?
32. Java中如何正常终止线程?
33. 主线程可以捕获子线程抛出的异常吗?
34. 多线程个数?
JVM
1. java虚拟机运行的流程
2. java虚拟机的核心设计思想
3. JAVA内存如何分配?
4. 画出java运行时内存区结构图
5. 堆区如何分类
6. 堆与栈区别
7. 为什么要把字符串常量池放到堆区
8. java8方法区的变化
9. 判断对象已经无效
10. 引用计数法实现原理
11. 哪些对象可以作为GC Root
12. GCRoot详细
13. finalize()方法回收对象的两次标记过程
14. Java四种引用及场景
15. 垃圾回收算法和流程
16. 如何减少full gc的次数?
17. 方法区是否需要gc
18. 查看GC状态的命令
19. CMS收集器的流程
20. G1收集器的流程
21. CMS收集器和G1收集器的区别
22. 内存管理(对象创建、布局、访问定位)
23. 堆内存分配策略
24. 查看java虚拟机内存占用?
25. java的类加载流程
26. 类加载器
27. 类加载器的双亲委派
28. 为什么需要双亲委派
29. 线程上下文类加载器
30. 对象的创建过程
31. Class类文件怎么回收
32. Minor Gc和FULL Gc的区别
框架的话其实就ioc、AOP、Bean生命周期、MVC最好还是搭配技术内幕看看 源码,不用很广,需要深度
希望大家找我内推哈!做同事!
mark
mark
mark
mark
woc,南理工学长
欢迎各位用我的内推码2H9GKFH去字节跳动官网进行投递;也可以通过上面的链接直接投递我的部门飞书,HC很多;有问题可以私聊我,提供简历修改服务~