写点什么

这是我 5 月份收到的第五个 Offer:字节跳动 Java 研发岗

用户头像
菜菜山
关注
发布于: 2021 年 06 月 08 日

前言:

面试,跳槽,每天都在发生,而对程序员来说"金三银四,金九银十"更是面试和跳槽的高峰期,跳槽,更是很常见的,对于每个人来说,跳槽的意义也各不相同,可能是一个人更向往一个更大的平台,更好的地方,可以通过换一个环境改变自己的现状。而我正是其中一员,投了十多家互联网公司,目前 已收到五个 Offer,其实跳槽是把双刃剑,有好也有坏,要看你是因为什么原因跳槽。如果说你即将准备跳槽,是否准备充足了呢?小编即将分享的正是这些面经分享和我的成长笔记。

面试前的准备:

面试的时候 99.99%的公司都会让你做一下自我介绍和最近做的一个项目,所以自我介绍和项目要提前打好草稿,特别是不太会说话的。

自我介绍:

我觉得简洁一点就行了,一般面试官都会趁着你自我介绍的时候看简历,也没认真听你做自我介绍。

下面是我自己打的草稿:

面试官你好,非常荣幸参加贵公司的本次面试。下面我简单的介绍一下我的个人情况,我叫 xx,xx 年毕业于 xxx 学院 xxx 专业。目前在 xxx 公司工作,主要是从事 xxx 开发。 通过 xxx 招聘平台关注到贵公司岗位的招聘信息,这个职位比较符合我未来的职业发展,而且贵公司的业务对我都非常有吸引力,非常希望能够进入贵公司发展。

我对技术有浓厚的兴趣,专业知识面宽,技术也相对全面,责任心强,思路清晰,沟通能力好,熟悉 JAVA 体系, 对各种开发流程和主流架构模式,设计模式和 UML,有较强的需求分析、架构设计、项目管理能力,并有丰富的实战经验; 出于对工程师文化的向往,我在研发团队管理期间,尝试了多种方法去建立良性的团队氛围,并有效的改善了研发效率; 技术是为产品支撑的,所以我现在也在熟悉产品设计过程,希望可以结合公司发展战略,营销策略,跟着团队打造出一个好的产品。

上面的可以适当简化一下,能说出来多少取决于你的记忆力。

项目介绍:

这个是真的要提前准备好说辞,不然你面试的时候边想边说,说起来磕磕巴巴的,你给面试官的第一印象就不好了,至少说明你的表述能力不强。

介绍项目的话可以不用太紧张,面试官才拿到你的简历看多久,所以肯定是对你自己的项目是最熟悉的。需要注意的地方就是不要只讲一些业务相关的,面试官不需要知道这些,他只关心你的技术能力是否足够,通过你的描述知道你使用了什么技术,再根据相关的技术进行提问。

贴一下我的草稿:

我在 xx 公司做的 xx 系统,客户主要是 xx,项目的功能主要是提供代理雨伞,代理快递,代理订餐,图书借阅等服务,后台用的是主体架构是使用 Spring Cloud,微服务模块划分为 xxx,我主要负责其中 xxx 几个模块的开发, orm 用的是 mybatis,数据库是用的 mysql,缓存是用的 redis,前台用到了 vue 技术。共有 xx 个同事参与开发,整个项目持续了 xx 时间。

面试官会对他感兴趣的点进行提问。


面经分享:

(面试次数有点多,着重讲述几次经典面试。)

美团面经分享:

美团一面:

  1. 做一下自我介绍吧,简单说一下你的项目;

  2. 有遇到过内存泄漏吗?你们是怎么解决的?

  3. java 的基本类型有哪几个?String 是不是 java 的基本类型?String 为什么要是 final 类型的?

  4. 反射机制的底层实现是什么?动态呢?动态的实现原理?

  5. hashmap 了解吗?说一下 hashmap 相关的一些东西?hashmap 是线程安全的吗?为什么是线程安全的?

  6. concureenthashmap 了解吗?他是如何实现线程安全的?

  7. 你刚才说 1.8 基于 cas?cas 的 ABA 问题怎么解决?

  8. 说一下 JVM 的线程模型?这些区域都分别是干啥用的?

  9. 说一下 java 类加载器的工作机制?类加载在哪个区域进行的?

  10. 说一下 java 的线程模型?

  11. violate 了解吗?它的原理是什么?violate 是线程安全的吗?

  12. 保证线程安全的解决方法有哪些?说一说读写锁吧,读写锁的读

  13. 数据库的索引有哪几种?为什么要用 B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC 机制了解不?MVCC 机制有什么问题?怎么去解决这个问题?mysql 慢语句调优做过吗?说说你是怎么做的?

  14. redis 了解吗?你说说怎么用 redis 实现分布式锁?

  15. spring 中 Bean 的作用域,springMVC 的 controller 是线程安全的吗?怎么去保证线程安全呢?

  16. 消息队列有用过吗?说说你怎么用的?

  17. 计算机网络了解吗?说一说 TCP 三次握手和四次挥手吧

  18. time_wait 状态产生的原因是什么?,有什么危害?可以如何避免?

  19. 寻找旋转排序数组中的最小值

美团二面:

1、手撕算法

  • 10 个多线程保证 i 从 0 加到 10 (差点翻车,主线程忙等另外 10 个线程完结

  • 反转链表

  • 上台阶(n=80)

2、操作系统

  • 常用的 linux 命令说一下

  • 操作系统中的信号 和 信号量有什么关系

  • epoll 和 Selector 有什么区别?

3、计算机网络

  • 说一下拥塞控制

4、数据结构

  • 说一下红黑树,你平时用的技术哪里用到了它?

  • 哈希表怎么处理冲突?

5、项目相关

  • 把项目放到服务器上运行的时候有没有遇到什么问题?查看项目运行的状态怎么做?

  • spring 和 springboot 的关系你是怎么理解的?

  • Spring IOC 和 AOP 说一下你的理解

  • 为什么用消息队列?

  • 对于消息的重复消费你有什么设计方案吗?

美团三面:

  • 你怎么学的 Java 啊?

  • 设计模式了解吗?单例讲一下,懒汉饿汉 double-check,怎么实现。策略模式,外观模式,适配器模式,装饰器模式,分别讲一下

  • 联合索引什么时候不会触发索引?

  • AOP 了解么,有什么好处,如何使用,怎么实现的?

  • 支付宝到银行的转账业务怎么实现?

  • redis 实现分布式锁

  • 三台机器集群,按不同权重访问,怎么做?

美团四面(hr):

  • 先介绍一下你自己吧

  • 平时怎么去学习的?

  • 为什么你说学习了要去实践?

  • 说一下的最大的优点和缺点

  • 举一下你缺点的例子

  • 想象一下你几十年后是怎样的生活?

  • 你觉得最痛苦的一段时间

  • 对你影响最大的一件事情

  • 在安排活动的过程中有没有发生什么冲突?

  • 你有什么崇拜的人吗?

  • 你有什么想问的?

美团面经答案整理

字节面经:

字节跳动一面:

  • 实习项目就聊了差不多 30 分钟

  • 问了 MySQL 的索引

  • redis 的 string 类型

  • 为什么使用 RabbitMQ?

  • RabbitMQ 有哪些部件?如何保证准确性跟一致性?

  • hashcode 和 equals?

  • 动态代理

  • 快排

  • 无序数组计算每个位置大于前面的多少个数字(归并排序)


字节跳动二面:

  • 谈谈项目?

  • mongodb 底层原理或者数据结构是什么,务处理,插入和 mysq 有什么区别,为什么会慢

  • 如载过程(Java) ,每一步做了什么

  • 子类和父类的实例变量和方法有什么区别

  • 重载和覆盖区别,返回值类型不同,可以重载吗,为什么,底层如何实现的

  • java 多线程,状态图,画出来,阻塞的状态有哪几种,运行顺序,多线程的一些方法

  • java 泛型

  • ThreadLocal, Concurrent 下面的包,原理是什么,

  • AtomicInteger,原理是什么,如何做到高效率的,有什么优化措施

  • 悲观锁和乐观锁

  • @Transaction 的原理,还有比如在一个类中两个方法, -个是 B 方法,-个是 C 方法, B. 上没有注解,C 上

  • 有那么在外面调用 B**有事务,为什么,根据底层原理能不能推断出来(给提示问你能不能推断出来)

  • 查询学生成绩不及格的所有人的姓名和编号,根据这个语句,如何建立索引,为什么,

  • mysq 底层是什么,为什么效率高,主键能不能太大,为什么,如果太大,底层数据结构会不会变化,为什么

  • linux 查询 tcp 连接处理 CLOSE_ WAIT 的状态的数目

  • 了不了解 RabbitMQ, kafka, RocketMQ, ActiveMQ, 以及其他消息中间件

  • redis 为什么效率高,线程,数据结构,网络模型,aio, nio, bio, 为什么这么设计?如何处理高并发

字节跳动三面:

  • 数据仓库,雪花模型和星型模型区别和用处,数据仓库的过程(分层) ,如何设计

  • 数据仓库和数据湖的区别

  • 分布系统的设计,分布式系统 CAP,分布式系统的模型

  • linux 环境下的线上业务管理有没有,如何管理

  • redis 的集合有没有限制,限制是多少

  • redis 的 1w 条的插入和更新有什么区别

  • mysql join 的底层原理是什么,有哪几种(不是左右连接这种)

  • linux 命令查询一个文件内出现重复最多的数字的

  • linux 命令查询一个文件的行数

字节跳动 HR:

  • 自我介绍,对公司面试的评价,实习时间

  • 为什么转专业?

  • 你认为你有什么优点?有什么缺点?有什么兴趣爱好?

  • 在团队中习惯充当什么样的角色?

  • 遇到过比较困难的事情是什么?觉得自己很幸运的事情是什么?

  • 对于未来的规划?有没有使用过公司的其他产品?有没有转正想法?

  • 你还有什么想问的?

更多面经分享

以下面经就不具体详说,大致方向都差不多。

京东物流

  1. java 特点描述一下,继承封装多态分别是什么意思

  2. synchronized 和 lock 区别

  3. ConcurrentHashMap 线程安全怎么实现的

  4. 创建线程的几种方式,创建线程池几个参数的含义,线程饱和策略

  5. sleep 和 wait 区别

  6. spring 是单例还是多例,多线程并发会出现什么问题

  7. SpringBoot 如何解决跨域,具体怎么配置

  8. 全局异常捕获怎么做的

  9. SpringSecurity 的前后端分离,登录怎么做的 我:拦截登录的 url,然后获取到用户名和密码,把这个用户名和密码交给 manager,manager 会交给具体的 provider 处理,provider 会调用 UserDetailsService 的方法完成验证。 这里是我失误了,他说用户名和密码时通过 getattribute 获取到的吗,我说是的。

  10. 怎么设计一个安全的对外接口

  11. 单线程的 redis 为什么这么快

  12. redis 持久化方式

  13. 什么是聚簇索引,什么是非聚簇索引

  14. mysql 事务隔离级别

  15. 你觉得你能承担独立开发的任务吗

开通金融

做互联网金融的,公司总部在北京,我面试的时候是在成都的新网银行公司,看这个模式应该就是驻场开发了,但是公司本身不是外包。

  1. springboot 和 spring 的不同

  2. springboot 特性,自动装配怎么实现的

  3. spring 用到哪些组件,具体场景

  4. spring 默认是单例还是多例,全局变量会有什么问题

  5. spring 事务传播行为、隔离级别

  6. aop 实现方式,jdk 动态代理和 cglib 动态代理区别

  7. jdk lambda 表达式几种使用方式,取最大和最小值,list 转 map,list 中有重复的怎么办

  8. 线程池 有哪些参数,各个参数的意义

  9. ioc 容器有什么优点

  10. jvm 堆栈,区别,线程共享还是线程私有的

  11. springcloud 组件、用途,负载均衡的几种算法

  12. 分布式事务怎么做的

  13. mybatis 一对多,多对多怎么做

  14. jpa 和 mybatis 区别

  15. vmstat 命令干嘛的

  16. redis 查看内存占用命令

  17. mysql 导入大量数据怎么优化

  18. mysql 有一条数据死锁了,怎么排查问题,mysql 表死锁,怎么排查

  19. nginx 反向代理是什么,正向代理呢

这次面试回答得挺好的,hr 也打了好几次电话说面试官对我挺有意向的,就是一顿操作猛如虎,一问工资 0.9。而且我当时还是在职,要求我一周到岗,我就没去。

以上面经答案,和其他部分面经分享已整理成 PDF 文档,有需要完整文档资料的朋友,可以见下图添加上小助手即可免费获取到了。


拿下 offer 前,我做了些什么?(我的成长笔记)

1.准备简历

之前已经说了,简历是门面,更是敲门砖,能否拿到大厂的面试机会,就要看自己的简历如何,抛开学历以外,大厂最看重简历是否有亮点,因此我们对简历内容要有准备,对自己的突出点,包括技术、个性上的亮点,要练习表达,避免临时组织语言。

2.提升技能

实际上我有个阿里的朋友很早之前就向我透露过,很多人认为大厂看重学历,但实际情况并不完全是,在阿里只以能力论英雄。所以,在日常生活中,通过不断地学习,提升自己的能力,努力去拉近自己与目标值的距离,这是很有必要的,也是未来的必然趋势。

关于提升自己的技术栈广度与深度,我的做法是:

01.阅读实战文档



02.读一些源码


03.读一些技术笔记


4.多刷面试题

对于 base 不是太好的人来说,刷面试题实际上是最具有“急救”效果的办法,因此在面试阿里前,我是刷了不少面试题的,目的倒不是希望面试时能被问到原题,而是对大厂面试有一个相应的了解,清楚阿里面试会问一些什么,涉及到哪些技术栈等。

01.Java 核心面试知识点整理


02.算法部分(LeetCode+算法的乐趣)


03.BAT 大厂面试真题+专题训练


总结:

以上便是我的学习笔记和方式,让我成功的在 5 月份拿到多个 offer,相信爱学习的你只要静下心来学习,更多的大厂 offer 会向你招手。

学无止境,学习是一种态度,无论你是小白菜鸟,还是技术大牛,日常都不能够落下学习这件事情,一旦落后下来,就容易遭到淘汰。

以上就是我的经历分享,和资料整理,全部都已打包好,均是免费分享的,等待爱学习的你,需要这些资料的朋友可以见下图添加上小助手即可免费获取到了。



用户头像

菜菜山

关注

还未添加个人签名 2021.05.07 加入

还未添加个人简介

评论

发布
暂无评论
这是我5月份收到的第五个Offer:字节跳动Java研发岗