大家都想进大公司,毕竟大公司的待遇和前景等都是优于小公司的,下面为大家揭秘,一个不知名的小公司java程序员,原先年薪不到15万,通过自己的努力不断的提升技术,最终收获多个知名互联网公司的Offer,年薪达到30多万!
第一阶段:跳槽前的技术准备
1、JDK源码、设计模式
将重要的JDK底层源码,比如集合包、并发包的源码都读了一遍。此外,对各种设计模式也做了一定的研究
2、分布式事务、分布式锁
分布式系统是目前大厂面试必问的技术点之一
3、常见面试技术问题的梳理和总结
Mysql数据库、网络、IO、分库分表、分布式消息队列等等
4、Redis缓存相关技术,以及高并发下的缓存架构设计
大厂对于缓存技术也是常问,Redis缓存面试题也是其中的重点
5、微服务框架Dubbo、SpringCloud
微服务就不用说了,现在很多系统都是用微服务架构来设计的,Dubbo、SpringCloud等也是目前热门微服务框架,特别是Dubbo
最后可以刷刷各大互联网公司的面试题,刷题也是增加自己的知识点途径之一,而且也为面试打好基础。
第二阶段:面试过程
大公司的面试,大致可以分为三个面试过程,下面简单说下:
一面:技术面
先问下基础,聊到synchronized锁的实现原理,cas实现原理,juc包下并发类的场景使用场景。
然后开始聊框架源码,我讲了讲springcloud中Eureka的源码,Hystrix框架的源码,然后聊了一下集合相关的类,例如HashMap、ConCurrentHashMap等等。
最后针对redis问了下使用场景,怎么使用,缓存穿透、缓存击穿等问题。
二面:项目经验
先简单介绍下之前的项目,都用到什么技术,然后面试官问了些项目的问题。
哪些场景使用到多线程,是怎么使用的,知道线程池的原理吗,生产环境数据库怎么部署?
redis怎么部署?主从数据同步的原理了解吗?主从架构的延时和数据丢失怎么解决?有遇到系统OOM的问题吗,怎么解决?做过哪些JVM优化?为什么要这样配置?
三面:综合能力
问的很基础,比如Https怎么防止被抓包?讲讲什么是BIO、NIO、AIO?JVM类加载流程?
后面都是些对于职业规划、聊聊公司的发展以及未来……都不是些什么技术问题。
最后
互联网大公司面试套路都差不多,但首先最重要的还是代码能力和思维方式,当然心态也是挺重要的一点,千万别崩,多尝试几次就熟悉了。