做了4年左右java,正常情况应该是什么水平?
Spring AOP 原理
看到这一系列的知识点,可能有的一下子就慌了,当然,这只是一小部分而已。面试官喜欢针对求职者掌握的知识点刨根问底。如果你能吼住的话,进入下一轮面试的几率就大大提高了。
阿里更倾向深度挖掘,针对你掌握的知识点进行深度挖掘。比如前面提到的Java知识点,垃圾回收机制Garbage collection,我们知道要,准确理解J***a的垃圾回收机制,我们可以从:“什么时候”,“对什么东西”,“做了什么事情”这三个方面来分析。
要是在面试时,面试官问“对什么东西”,有的求职者回答 没有用的对象,按道理来说,这并没有错,只是这并不是理想的答案。要是能更进一步分析,那就更好了,GC操作的对象分为:通过可达性分析法无法搜索到的对象和可以搜索到的对象。对于搜索不到的方法进行标记。从root搜索不到,而且经过第一次标记、清理后,仍然没有复活的对象。
对于用可达性分析法搜索不到的对象,GC并不一定会回收该对象。要完全回收一个对象,至少需要经过两次标记的过程。 把问题具体化了一些,对类似这样的对象进行回收,相信能给你这次面试加分。
项目思考深度
要是你通过基础知识的考核,恭喜你,你离拿offer不远了。接下来面试官一般会让你说说你的项目经验,譬如项目的架构图,既然有了架构图,你需要清楚理解每个模块的作用,每个框架的原理以及与其他框架的优势和不足。
3年能将J***a学到什么程度?
三年说长不长,说短不短,如果是一个初入职场的新人,工作三年之后将会面临第一个坎儿。大多数人可能由初入职场的菜鸟,变身成为可以独立开发的老手,还有更优秀的可以担任开发组长甚至是项目经理了。那么这三年应该学习到哪些技能呢?
现在的项目离不系统之间的交互吧,所以常用的接口调用需要学会。如果更深入一些,要知道各种传输协议、网络IO、应用级协议以及可选实现技术。
数据库肯定是要学的,不仅仅要会写SQL,还要会写一些复杂的SQL语句,甚至是存储过程。最好对数据库的优化有一定的了解,比如说如何看执行***、如何进行SQL优化、什么时候会索引失效等等。各种数据库的连接池框架,也要会使用,比如Druid、HikariCP之类的。
框架:其实这个就比较多了,而且每一家公司用到的技术栈都有所不同。但是现在流行的一些框架,最好还是可以了解一些的,不说研究源码吧,至少会使用,并且知道原理是什么。而且别只抱着SSH、SSM不放了。Spring和Spring MVC都是很有用的,Struts我觉得快不行了;Spring Boot是你必须要学的,Spring Cloud里面还有一堆框架,也要看看。总之要保持一定的技术敏感度,看看现在流行的框架有哪些。
非关系数据库:有些公司可能用不到,但是建议看看,特别是Redis,这个应用很广泛的。
MQ:Kafka、RabbitMQ什么的用一用。用到Kafka的话,顺便就把Zookeeper看一看。
其他:负载均衡得会,因为很常用,其余的一些,比如持续集成、Devops,如果公司没有用到的话,自己学习起来也比较难,可以先了解一下概念。
英文:这里的英文是指看英文文档的能力,建议在学习上面这些技术的时候,坚持看官方提供的英文文档。如何练好阅读英文文档?就是多看!