Java程序员应该如何规划自己的发展路线?
首先,很多程序员在职场发展的初期都会面临一个路线选择的问题,甚至不少开发团队中的主力程序员也存在发展路线不清晰的问题,如果不能及时确立自己的发展方向,对于未来的职场发展会产生一定的负面影响,也很容易导致职业生命周期缩短的情况。
就现在经济大环境而言,很不乐观,Java程序员的日子也很不好过,无论是还在找工作的、还是已经入职多年、哪怕做到项目经理技术经理的,压力都异常巨大,似乎处处充满危机。但是,仔细分析一下,出路还是有的,甚至解决温饱、过上有房有车没贷款的生活也是很可能的。首先,在如今这个浮躁的社会,大多数人的心态也是浮躁的,只要你能潜下心来,深入研究某个技术,有了一技之长,温饱问题肯定就可以先解决了。
Java程序员应该如何学习提升自己?
我在和这位架构师进行交流的时候他告诉我:
很多人虽然每天都在学习,但是真的是在做无用功,学的东西很多都是即将被淘汰,或者工作中遇不到,面试中问不到的一些技术。反倒是面试中常问的的,工作中经常用到技术,觉得自己会用就行,或者是觉得自己懂得够多了,没有再去深入的研究!你觉得,这样的学习有什么用呢?
在后续的交流中,我问他,现在面试时都会问哪些技术?都会问到什么深度?他告诉我:其实你翻翻面经,或者去面试两次也就知道了,面试问的都是那些东西,只不过很多人都在背面试题等等,要我说这样只会让面试官更加不看好你!
做个小测试吧,下面给大家看一份面经
一面: 90mins
讲项目
讲一个集合框架整体框架
分Collection和Map两大类全部讲一遍,每一个接口和对应实现类,他们类各自的特点,性质,基本参数,能讲多深讲多深
arraylist和hashset区别
为什么hashmap要在8的时候树华
hashmap线程安全的方式
hashtable和concurrenthashmap的各自特点,能讲多深讲多深
为什么hashtable被弃用了,cch1.7之前和1.8之后的区别
锁的分类
乐观锁、悲观锁、自旋锁、读写锁、排它锁、共享锁、分段锁等等各自特点,以及它们在java中具体的实现方式
Spring IOC的底层实现
XML+dom4j+工厂+单例
索引不适用的条件
索引列上有函数,不满足最左前缀,使用了不等号,使用了范围查询等等
索引的分类
B-Tree索引,Hash索引,全文索引,单值索引、唯一索引、复合索引、聚簇索引、非聚簇索引等等,以及它们各自的特点
二面:40mins
讲项目
线程池了解多少
executors创建的几种线程池,直接new ThreadPoolExecutor,7个参数
线程池拒绝策略分别使用在什么场景
Spring AOP的底层实现
动态代理,newProxyInstance,cglib,ASM
讲一下代理模式
动态代理,静态代理
你都了解什么设计模式,他们在JDK中如何体现的
工厂,责任链,观察者,建造,代理,单例,原型等等在JDK中对应的体现。。。
三面coding:2h
千万级数据量的list找一个数据(多线程),抢红包
四面:50mins
讲项目
讲一下JVM堆内存管理
栈上分配->TLAB->新声代、老年代->可达性分析->GC算法->所有垃圾回收器及其优缺点和特点
那到底多大的对象会被直接扔到老年代
G1两个region不是连续的,而且之间还有可达的引用,我现在要回收其中一个,另一个会被怎么处理
听说过CMS的并发预处理和并发可中断预处理吗
平常怎么学习的和职业规划
五面coding:2h
百万级int数据量的一个array求和(fork/join)
六面交叉面:20mins
深挖科研项目
七面hr:20min
聊人生
通过上面的这份面经你都得到了那些收获?
先说下这份面经需要注意的地方
这是一份应届生的面经
面试中都问到了那些技术点
面试的深度
面试时长
通过面经得出的结论:
应届生面试时算法问的会多一点,不会着重抓项目,面试的重点还是基础知识。面试时过程中问到的知识点都有那些、面试时可能会遇到连环炮,死怼一个技术点,一直深入直到你不会为止。
应该着重学习那些技术?
ps:应届生首选算法,保证每天一道LeetCode题
多线程
JVM
设计模式
Redis
MySQL
ZK