去面试BAT大型互联网公司竟然是这样的要求(校招Java岗)
前言
个人感觉面试还是主要围绕简历来问的,所以不熟悉的东西最好不要随便写上去。 项目和基础都很重要,(后面会补充一下自己学习过程和路线,书籍等,给自学的同学一点参考)
阿里一面
- 自我介绍, 项目
- 收获最大的一个项目, 着重介绍, 项目的演进过程, 从提高系统可用性的来进行演进,例如redis的可用性,
- 分布式锁(项目), redlock,持久化机制,主从复制过程, redis知道的都说出来
- redis解决分布式Session问题, 单点登录, Session一致性问题,描述,如何实现
- IOC 的实例化过程,原理,
- AOP, JDK代理, Proxy, InvocationHandler
- 一个循环链表进行是否为空判断
- 树的遍历, 层序,先、中、后的递归非递归实现
- 操作系统 P/V Semaphore类,
- CAS, AQS 实现
- 看哪些书, 论坛,如何学习Java
- 智力题 喝汽水问题, 2个空瓶换一瓶汽水,1元1瓶,可以买多少瓶汽水 问题,(刚好看过,通过借一瓶来最后再多喝一瓶)
阿里二面
- 自我介绍
- 在校,学习情况,参与项目(介绍一下业务方面,架构方面的过程)
- hosts文件
- 乐观锁, 悲观锁, 举例, 可以顺便说一下, CAS,volatile, synchronized
- 事务,分布式事务, 如何实现分布式事务, 两阶段提交,(过程)
- JVM堆划分,方法区,
- 执行了 system.gc()触发的GC机制,FGC, 如何进行回收的, 分代回收
- 系统周期性卡顿,如何定位问题,结合GC日志, YGC,FGC, 调整分代的大小, 减小FGC时间
- 产生FGC的原因
阿里三面
- 自我介绍,学习过程,项目中的难点,如何解决,
- 如何去提升系统的可用性,性能,扩展性,伸缩性,等等, LVS,反向代理,集群,异步,缓存等等
- 开放性的系统设计,一个车票查询系统,对最短时间,最短开销进行求解,类似于12306的火车票购票系统,。
- 亿万流量网站架构和新技术, 这本书可以参考一下
阿里四面
- 自我介绍
- 学习过程, 难点——
- synchronized关键字作用与静态方法和普通方法的区别,通过不同的对象的监视器来进行并发控制,monitorenter, monitorexit
- 服务器CPU使用率很高,如何排查, top 定位进程, 如果是Java,通过jstack进行线程快照分析,jmap,jhat 等等,
- 智力题
- 红黑树的优缺点
- AOP 动态代理
阿里HR面
- 自我介绍 学习过程
- 为什么选择转专业
- 项目中遇到的难点,
- 对部门的理解
- 个人的职业发展,城市的选择,职业方向,有没有其他公司的offer
下面是自己的一点自学和准备面试的过程,希望可以对其他人转行的人有帮助
自学过程:
首先对于Java后端开发的岗位而言,自己一开始也是从0开始学习的。最开始也只是知道有前端、后端、移动端、测试、算法等这些岗位,但是并不清楚这些岗位都是做什么工作的,在网上也没有找到对应的学习路线,就去知乎,或者别人的博客看看Java后端都需要学习那些知识。
刚开始学习的时候从Java基础知识入手,先看了一下《Head First Java》,然后《Java编程思想》看了不到一半就放弃了,基本看不懂。然后看了一下黑马的视频,看了一下大致的基础知识和web基础的部分,然后就可以开始学习框架和简单的开发了,刚开始自己可以在网上找一个Demo,跟着做一做,熟悉一下后端开发。(可以去牛客网或者慕课网找一个Demo项目跟着做一下)。在熟悉了基本的开发过程之后,可以进行深入做一些web项目。然后自己有针对性的进行学习,比方Redis,消息队列等。
大致就是下面这几个方面要进行学习:
计算机基础:计网,OS,算法和数据结构必须熟悉;组成原理,编译原理等等看了更好
语言基础:Java的一些语言特性,多线程,JVM
数据库:基础概念,SQL,数据库的设计等
web基础:Servlet,JSP, HTTP协议, Cookie, Session等进行一下了解,可以自己用servlet写个demo
web框架:SpringMVC, Spring, Mybatis, 在项目实践中学习,先会用,然后深入。 SpringCloud, SpringBoot等也可以进行学习
中间件:Redis, 消息队列这些也可以了解一下
开发工具: Maven ,Git等等
系统设计:如何提升系统并发,保证可用性,伸缩性,扩展性,安全性这几个方面的考虑。
自己在学习的大致就是上述的过程,也不是很有计划性,基本都是边学习边修改自己的计划。 个人学习路线大纲(由于学习路线图过大这里就不做展示了,可私信我“资料”获取)
读者福利
读到这的朋友还可以私信我免费领取一份收集的Java核心知识体系文档及更多Java进阶知识笔记和视频资料。
资料领取方式:点击链接加入java架构技术交流
更多笔记分享