在面试前,以及在工作中(我常说,要以随时准备面试的状态准备着😃),作为一个Java开发,应该需要准备一些技能和知识,以提升自己并拿下面试。不知道的一定要及时深入地补上,并记下笔记,最好是写成博客。
对于我们很多开发的人来说,最近工作中使用的技术可能会相对熟悉;而没用的或是用过了后来不怎么用的,自然的就渐渐地忘了(毕竟人脑这个内存还是有限的,成本也很高,不用的就放到外存吧),因此深入地学习并记录以便后续我们更容易复习。
其实我们也都知道,现在面试要求都很高,有句话怎么说来着?“面试造航母,工作拧螺丝”,这从侧面说出了一个问题,如果你不会造航母,连拧螺丝的机会都得不了(当然有创业能力的人除外);当然,也从另一个侧面说明了(某一层次的)开发人员的数量很多,催生出了一些畸形行业现象。我们说的封装理念(对使用者透明)哪里去了?框架说好的要让开发更专注核心业务的开发哪里去了?为什么要去了解很多东西的原理、源码实现等等,一个Java开发还要了解运维、容器等等?
我想这是有道理的,开源在这个行业做得很好,既然是Free Software,那么你可自由地修改,有了问题不会有专门的商业公司为你服务,那么只能自己去解决,所以还得知道源码。都说程序员是目前仅存的纯手工工种,但也是自动化程度很高的工作,都是计算机😃。运维和开发已然交织,因此什么构建、容器、架构等等都得知道。既然选择了就坚持下去吧。
对于开发人员的我们来说,我建议是把一门语言扎实地学好(这是个动态的过程,因为语言也在发展,因此还要关注其发展并跟进学习),然后以某一两项使用的应用技术学好、用好,作为自己的技术标签。这个很重要,不然“样样通,样样松”的万金油只作为开发是很吃亏的,“你觉得你在哪些技术方面最熟悉?”这样的问题都不好回答,也没有自己的看家功夫。给自己弄个技术标签吧,开发的伙伴们。
作为一个Java开发,对于面试准备,我想我们需要如下一些技能或知识。
01、计算机基础知识
01-01、操作系统
01-02、计算机网络
01-03、数据结构
01-04、算法
02、Java基础知识
02-01、JVM
02-02、Java语法知识
02-03、JDK源码
02-04、Java的常用设计模式
03、开发应用知识
03-01、常用框架:Spring、SpringMVC、SpringBoot、SpringCloud、Netty、Dobbo、Motan、MyBatis、GRPC、Shiro、单元测试框架、日志框架等
03-02、数据库(SQL、NoSQL)、搜索引擎:MySql、Redis、Memecache、MongoDB、MyCat、ShardingSphere、ElasticSearch等
03-03、消息队列:ActiveMQ、RabbitMQ、Kafka、RocketMQ等
03-04、分布式开发技术:Zookeeper、RPC、SpringCloud、SkyWalking、cat、zibbax、数据一致性算法、哈希一致性算法等
03-05、常用的架构设计方案、解决方案
03-06、负载均衡:DNS、F5、LVS、Nginx等
03-07、开发工具:Maven、Gradle、Git、SonarQube、Jinkens、Jconsole、btrace、linux等
03-08、容器化技术:Docker、K8S等
03-09、其他:lua、python
面试前需要准备这么多?不需要!明确不需要!但这还得看你简历这么写,如果按这种方式去写,应该是不需要的。一个人的精力是有限的,只要有好的基础,有自己的技术标签,面试不是问题。学好基础,建立自己的技术标签,然后其他的也学学,就好了。明白了自己需要学的,接下来就是应该深入学习并写成系列博客文章。
写得不好,说得不一定对,希望您带着批判性阅读,希望您能多提提宝贵意见,希望不误人子弟。也没很细致校对,错误之处望不吝指出,谢谢!
来源:oschina
链接:https://my.oschina.net/u/561986/blog/3169475