网上有很多所谓的Java程序员面试经历,其实看下来的感觉就是没多大用,面试是没有套路的,每一个面试官问的东西也都不一样,如果根据那些面试问题去学习和准备,那真的是只见树木不见森林,对个人提升没有太大提高。
那么,一个优秀的程序员应当具备怎样的技术素质呢?按照我个人的理解,主要就是基本功+项目。
为什么说针对面试题进行学习和准备作用不大?因为我认为我们关注的不应当是题,而是题背后的一个一个的方向,这也就是我认为的基本功。那从基本功的角度来说,包括但不限于以下内容:
工作相关使用到的JDK类及其相关源码、机制;
设计模式:设计模式在工作中用到了哪些,具体使用场景
并发类的相关知识:线程安全、锁机制、信号量、闭锁、栅栏、线程池等;
框架相关:Spring相关机制、Akka相关机制、Netty相关机制、使用的细节点、框架实现原理等;
JVM,内存布局、垃圾识别算法、垃圾回收算法、垃圾收集器、类加载机制、内存模型、出现内存问题时定位问题的方法等;
数据库的基本数据类型、索引机制、各引擎区别、锁机制、慢SQL定位及优化等;
缓存机制,这里的机制指的是缓存加载、缓存击穿、缓存雪崩这些机制及其相关应对方案,用过Redis、MemCache的最好理解一下它们的原理或者缓存提供的一些高级功能,集群如何实现;
分布式:比如CAP理论、数据一致性的几种解决方案、分布式事务如何处理、分库分表怎么做、现有的相关解决方案等;
Netty相比原生NIO的优点、半包拆包、断线重连解决方案等;
其他中间件,MQ作用和使用场景、服务化治理框架的作用和使用场景、配置中心的作用和使用场景等
。。。。。。
坦白讲,以上的这些东西全都掌握也不可能,哪怕面试官肯定也有很多不会的,但这就是基本功。别人对你技术的考量绝大多数都是以深度优先、广度次之为标准的,我们可以挑选其中几项进行深入的学习,发挥自己的所学的长处。
在此给大家推荐一些资料,小编这里还有更多高清视频教程,需要资料的
转发+赞+私信“资料”,即可免费获取哦