社招和校招有什么不同?阿里美团等大厂JAVA社招面经分享!
前言
金九银十就要结束了,小编今天总结一下这段时间遇到大厂的Java面试经验,希望对大家的面试有帮助。
社招与校招面试的区别
校招面试主要考察的是大家对于基础知识的理解与掌握,数据结构和算法的熟练度。
对于项目架构,业务逻辑方面的考察较少。这也就要求我们熟练掌握各个模块的基础知识点。
社招面试考察的部分包括:基础知识点的掌握,对业务逻辑(项目)的理解以及对未来的职业规划等。
社招面试中对于所做项目的考察,以及根据项目衍生出去的知识点是相当看重的,可能直接决定面试的成败。
总的来说校招面试看重基础,全方位无死角的考察各位的基础知识点,并且一般考察XXX是什么?XXX怎么实现的?
社招面试对于项目的考察至少占到了一半,2面或者3面会针对项目做一个详细的沟通与了解,包括整个项目的业务架构,技术架构和技术难点和卡点等;
社招面试都是这么考察的,XXX是什么?XXX是怎么实现的?XXX为什么这么实现?也就是说同一个知识点,比校招多了为什么要这么实现?
校招的算法可能会比较难一点,而社招因为看重项目和技术的深度,限于时间,所以算法考察会相对简单一点。
下边列出这段时间小编遇到的社招高频知识点。(注意啦!别眼高手低,看着简单,但是你能扛得住三连问吗?)
一面:
多线程并发编程:
- 线程池的构造参数及其含义,如何确定线程池中线程的个数等
- 定时线程池如何实现的?
- synchronized,volatile关键字
- 原子性,可见性与有序性
- 可重入的锁ReentrantLock
- ThreadLocal的实现原理
- AQS底层实现,与ReentrantLock的关系
JVM知识点:
- 内存区域划分
- OOM介绍
- 对象分配与回收
- CMS和G1垃圾收集器
- 对象可达性分析
- 类加载机制
- JVM调优参数
- Full GC,Minor GC
- 对象的栈上分配(JIT编译器)
MySQL知识点:
- MySQL隔离级别
- 一致性视图
- 日志模块:undo log,redo log和binglog
- 索引结构,回表,最左前缀原则
- 间隙锁,幻读,MVCC
- SQL优化实战
Java基础:
- NIO的实现原理
- HashMap,HashSet,LinkedHashMap以及ConcurrentHashMap
- hashcode与equals方法的区别
- RuntimeException Exception Error
- 注解的使用
- 基本数据类型
- 五种常见的网络IO模型
Spring&MyBatis:
- Spring IOC和AOP的原理
- SpringBoot源码解读,启动方式,配置顺序等
- SpringMVC和Spring父子容器的关系
- Spring的事务实现方式
- 如何自定义实现SpringBoot中的starter
- MyBatis中#和$符号的区别
网络协议:
- TCP与UDP区别
- TCP可靠性如何保证
- TCP网络包分片与重组
- 三次握手与四次挥手,状态转换
- SSL握手协议使用的加密算法,非对称加密的缺点
- XSS和CSRF介绍
Redis&Kafka:
- redis实现分布式锁
- redis数据结构类型
- redis zset实现延时队列
- 跳表如何维护
- redis线程模型
- redis的数据过期方式
- redis持久化方式
- 缓存雪崩,缓存穿透,缓存击穿
- Kafka主题,分区和日志文件的关系
- Kafka日志压缩和删除
- 消息队列基本特性
算法题目:
- 找出多数元素(美团)
- 最长公共字串 (美团)
- 单例模式 (美团)
- 快速排序 (阿里)
- 查找链表中倒数第N个节点 (头条)
- 合并k个有序的链表 (快手)
- 蓄水池 (快手)
- 自定义实现parseDouble方法 (快手)
- a+b+c=0 (头条)
- 二叉树前序遍历 (快手)
- 二叉树按照前序遍历转换为只有右节点的树 (猿辅导)
- 按照之字形遍历二叉树 (头条)
- 保留有序链表中的重复元素,并且只保留一次 (阿里,这个很有意思,感兴趣的同学可以实现下) 给定一个有序链表,保留链表中重复出现的元素,并且只保留一次,如给定链表1->1->1->2->3->3->4.
结果为1->3。请写出一个高效的算法- 使用三个线程分别打印A,B,C,按ABC CBA ABC CBA …的顺序进行打印 (阿里) 还行,对于有准备的各位来说,这些算法都不太困难。待会在资源分享段落,楼主将会分享自己私藏多年的算法学习节奏,助你备战面试!
一面总结:
社招一面(生死面)容易挂的第一个点,就是刚开始的项目讲解的一般,没有亮点。项目中的技术难点和技术卡点无法表述出来,很容易给面试官一种“这人不行”的感觉。至于基础知识还是得靠我们平时多想想是什么?怎么实现?为什么这么实现?
总之讲解一个优秀得项目,面试就通过了一半。
二面:
一轮面试如果通过得话,恭喜你,你的面试其实已经通过了一半。因为一面面试官已经在基础知识方面对你进行肯定,二面面试官得提问方向就相对比较多了。二面面试官得重头戏还是你对项目的理解。
本轮面试会让你继续讲解一个或者多个项目,因为没有了基础知识点的考察“压力”。面试官会对项目进行深入了解,包括其业务架构,技术架构与技术原理等。
大概包括如下的技术点:
- 项目业务架构,针对项目中各个知识点进行扩展与提问
- 项目技术架构,技术架构中比如说Thrift的实现原理,nginx相关知识点等
- 项目中学到了哪些技术?或者之前学到的技术哪些在项目中可以体现?
- 服务的QPS如何?如何保证服务高可用性?
- 如何限流,熔断和降级服务?
- 服务的部署方式,各个集群数据库的同步方式
- MySQL单表数据量多大?索引结构如何?
- 上线新服务如何进行压测?
- 内存泄露的排查方式?
- 线上接口响应超时的排查思路
当然了,在这些比较开放的问题之外,部分面试官依然会考察一些基础知识点,这个看各个面试官的风格了。但是,二轮面试看重的还是项目技术架构以及你所做的贡献有哪些。
二面总结:
二轮面试考察的不仅仅是基础知识点的掌握,更重要的是实际的业务逻辑能力。如果你可以在回答中表现出自己良好的解决实际线上故障的能力与水平,并且在实际的工作中对一些方向有进行过深入的了解,那么你的面试之路将会顺利许多。
三/四面:
为什么将第三轮/第四轮面试放一起呢?是因为有的公司只有三轮技术面试,而个别公司会有四轮技术面试,大同小异吧,我们这里统一进行介绍说明。进行了最后一轮技术面试,意味着前面面试官对你基础知识的肯定,你的业务逻辑与处理问题的能力也得到了肯定。
本轮面试基本上就是业务部门老大在面试,主要考察的方向也比较固定吧。主要考察的方向包括:
- 为什么出来看机会?
- 原公司团队的一些基本情况
- 项目的简单介绍
- 开放性的系统设计题目: 排队系统 点餐系统 停车场系统
- 未来的职业规划
- 有什么兴趣爱好
- 你还有什么想要了解的呢?
怎么样呢?是不是感觉比较轻松?所以说,不要害怕Boss面,大老板一般都是很随和的,不会刻意去为难大家的,尤其是在前面轮次已经进行了详细的考察之后。
能走到最后,你的各种能力基本得到了肯定,大Boss喜欢你还来不及呢,怎么会为难你的?当然了,一些面向对象的系统设计,包括各个模块的划分,数据库表结构的设计我们还是得全面考虑,设计出来才行哦,关键得是思路与设计能力。
HR面:
恭喜你,如果你已经进入HR面,那么你离正式通过面试就差一小步啦!HR面试主要考察候选人得价值观和上进心吧。主要涉及问题如下:
在原公司得哪一段时间是比较享受的?(注意,这里要说自己的成长!) 为什么现在出来看机会呢?看什么类型的机会?(提升自己,挑战自己等)
同事或者朋友之间如何评价你?(说自己的优点,乐于助人等,热心) 平时如何学习呢?有没有什么技巧?(看书,官网,做项目)
你对我们的业务方向有了解吗?(通过前面面试反问环节,有所了解,大概说下) 你的职业规划是什么?
(深度和广度,钻研某个放心,沉淀自己,寻找感兴趣的技术点等) 你的一些优点有哪些?(哈哈.jpg)
目前还在看哪些机会呢?手里还有别的Offer吗?(实话实说,多了去了_)
总结
面试经验很重要,只有面的多才不容易踩坑,面试官问一个问题,你可以回答相关联问题,可以引导面试官问你问题,而不是一问一答的这种。即使一个问题不会,也可以回答类似的有关联的问题。
小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案免费分享给大家,希望能帮助到大家,有需要的朋友可以看下面的免费领取方式!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
领资料点这里:暗号****
领资料点这里:暗号****
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
最后感谢大家的支持,希望小编整理的资料能够帮助到大家!也祝愿大家都能够升职加薪!