前言

我是18届毕业的,普通本科,软件工程专业。刚毕业时我意气风发,觉得进大厂挺容易的,但是现实却给我狠狠来了一击。

校招面了各种大厂,不是一面挂就是二面挂,连三面是什么样子都没见过,说实话,当时被打击的不轻,但是没办法,生活还得继续。

认知到自己的能力只是个菜鸡,又迫于生存,最终去了一家三线厂做后端开发的工作。



正文

这次之所以想出来面试,一共有两个原因:其一是,心里一直有个大厂的梦,想进大厂看看。其二是,自己想回南方发展了。还有就是顺便看看自己水平到底如何了。

所以在今年2月份开始,我就以及开始复习面试的相关知识了,并着手准备相关材料。

  • 面试准备

根据简历上的内容,尝试着自己对自己模拟面试,从基础开始,由浅入深,同一个知识点换不同的角度、逐渐深入,先问出自己能问的所有问题再尝试着解答,看看自己能够达到什么程度,对自己有一个明确的了解……

  • 向大厂投递简历

到这里我是非常的慌的,我不认为自己还能进大厂,不过还是按照她的建议向阿里、字节等大厂投递了简历,没想到短短几天收到了几个大厂的面试邀请,突然对自己有点自信了!

  • 大厂面试

大厂的面试问得真的很深,还要前面有所准备,一面的时候还有些紧张,后面就慢慢自信起来了,哪怕是和HR聊薪资也敢往上要了,最蚂蚁、腾讯、百度都通过面试拿到了offer,抖音二面挂了,滴滴HR面拒了。

面试经历

蚂蚁(三面)Zookeeper+微服务+消息中间件+高并发架构设计

一面

  • JVM数据存储模型,新生代、年老代的构造?

  • java GC算法,什么时候会触发minor gc,什么时候会触发full gc?

  • GC 可达性分析中哪些算是GC ROOT?

  • 你熟悉的JVM调优参数,使用过哪些调优工具?

  • Java 有什么锁类型?

  • 描述下线程池的处理流程?

  • 类加载机制,一个类加载到虚拟机中一共有几个步骤,这些步骤的顺序哪些是固定的,哪些是不固定的,为什么不固定

  • hashmap是线程不安全的,concurrenthashmap是线程安全的,怎么实现的线程安全?

  • volatile关键字解决了什么问题,实现原理是什么

  • 并发容器有哪些,并发容器和同步容器的区别

二面

  • 在工作中,SQL语句的优化和注意的事项

  • 哪些库或者框架用到NIO

  • Spring 都有哪几种注入方式,什么情况下用哪种,ioc实现原理

  • 如何定位一个慢查询,一个服务有多条SQL你怎么快速定位

  • 聚集索引和非聚集索引知道吗?什么情况用聚集索引什么情况用非聚集索引

  • Nosql引擎用的什么存储结构,关系型数据库和NoSQL各自的优劣点是什么,如何技术选型?

  • 微服务架构下,如果有一个订单系统,一个库存系统,怎么保证事务?

  • 分布式一致性协议raft,paxos 了解吗

  • Zookeeper中的ZAB协议,选主算法

三面

  • 自我介绍

  • 参与的并发项目,从设计到部署,按照流程讲一遍。

  • 项目相关你用过redis,用在什么场景,怎么使用的?

  • mysql同步机制原理,有哪几种同步方法

  • 数据库主从同步如何实现,事务如何实现

  • 谈谈你对SOA和微服务的理解,以及分布式架构从应用层面涉及到的调整和挑战。

  • 阿里系中间件metaQ及原理与现有的kafka有什么异同

  • 在阿里有了解过什么中间件吗?实现原理?与其他开源消息队列有什么特点?

  • 为什么选择换公司?

  • 三年到五年的职业规划?

  • 你有想问我的?

腾讯(三面)

一面

  • 项目讲了20分钟,问你做了什么,项目细节、你的成长之类的
  • Java锁 synchronized volatile
  • 快排如何变为稳定的
  • 排行榜如何实现
  • 如何查排行榜第2000个人的信息
  • java游戏服务器 如何通信
  • 算法coding,反转链表

腾讯二面

  • 工厂模式 场景
  • hashmap treemap
  • 数据库索引 不用二叉树原因是因为 二叉树可能会变为O(n)
  • 数据库如何加快 查询 :cache 索引 ,分表分库,
  • 网络粘包
  • 网络两次握手不可以?
  • Kafka水位(high watermark)
  • ArrayList 和 LinkedList 遍历操作效率比较?ArrayList更快 操作系统预读

腾讯三面

  • 算法:带父节点的二叉树 中序遍历查找的上一个节点?
    zookeeper如何体现AP

百度

一面

【Spring】

  • Spring的项目介绍一下

  • 加载扫描bean的流程

  • Spring生命周期

  • Spring的Bean的作用域

  • MVC流程,@RequestMapping注解具体怎么实现的?

  • @Transaction注解实现知道吗,具体怎么实现的?

  • Spring的事务了解吗?

  • Spring的事务传播,事务隔离级别

  • Spring的IOC,AOP的思想讲一下

  • Spring的bean依赖注入有哪几种方式?

  • 能说一下Java的反射机制吗?

  • SpringBoot用过吗?

【MySQL】

  • MySQL四种隔离级别

  • MySQL ACID说一下,AD实现

  • MySQL InnoDB索引结构

  • 能说一下InnoDB和MyISAM他们的区别吗?

  • 能说一下表锁,行锁吗?

【Redis】

  • redis分布式锁了解吗

二面

【算法】

  • 二叉树的右视图

【项目】

  • 博客有什么难点?数据库表设计,redis缓存,索引设计。

  • 博客项目的点赞功能怎么实现?

  • 如果两个人同时在使用admin修改一篇博客,前一个人的修改被后一个人的覆盖了怎么办?如果很多人修改如何保证提高并发性能呢?

  • 如果要调整博客的排列顺序,比如最后一个博客,排到第三个,你会怎么实现?

  • 为什么要在博客里使用redis呢。

【redis】

  • redis有哪些数据结构,你用过哪些?

  • redis如何保证高可用,redis分布式锁,延申mysql分布式锁,zookeeper分布式锁。你可以比较一下他们吗?

  • redis持久化?rdb,aof

  • redis主从架构master和slave如何同步数据。

【数据库】

三面

  • 说一下你加入的本科生团队?

  • 加入团队后你有哪些收获呢?

  • 你觉得在大学你有哪些提高?

  • 说一件你最遗憾的事情?

  • 说一件你努力过然后放弃的事情?

  • 你是怎么去管理团队呢,为团队的一些事宜写过相关的文档吗?

  • 你最不能容忍的团队中发生的事情?

  • 领导,老师让你做一件事,但你觉得没有意义,不想做,怎么办?

  • 你说渴望实战,不想读研学习概念性课程了,你觉得概念性的课程没有用吗?

如何准备面试

简历的准备

由于平时自己也负责组内进行一些面试工作,作为面试官来说,简历真的很重要!!它是面试官对你的第一印象,所以简历的排版以及内容质量很关键。

关于简历的排版,我总结起来以下几点:

1.简历的格式一定要用 PDF !!;

2.个人信息、联系方式尽量的放在前面,简历排版需紧凑,不要太松散;

3.对于一些技术栈、关键词需加粗强调;

4.简历整体内容尽量控制在两页以内,语句需精简,切勿啰嗦;

简历模板获取点击此处传送门


主要复习点

Java核心知识点整理

















最后

面试其实是一个自检、自省的过程,期间会发现自己的优点和不足。这次面试经历暴露了自己在算法及专项领域技术思考的欠缺...所以今后还要加强这方向的学习和巩固,但同时拿到了三家"大厂"的 offer,也是对自己过去两年的工作的一个肯定,说明我是一名合格的螺丝钉哈哈。

同时,面试的整个过程是很心累的,在这短短的一个月里,你会经历极度自信和极度失落的跨越,期间需要调整好自己的心态,面试没通过并不是你被全盘否认了,有可能是你的工作经历并不是很契合他的职位需求,所以还是要保持信心和斗志。

祝愿大家都可以拿到自己心仪的offer呀。