前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >又到了跳槽季,你们都准备好了吗?我来告诉Java程序员们如何快速全面的复习

又到了跳槽季,你们都准备好了吗?我来告诉Java程序员们如何快速全面的复习

作者头像
攻城狮的那点事
发布2019-06-28 16:43:03
8920
发布2019-06-28 16:43:03
举报

年过完了,大多数同仁们应该已返回并进入了工作状态,估计这个时候,有很多小伙伴也在开始准备年后跳槽的事情了,对于一些做传统项目的同仁,不知道如何复习迎接面试是肯定存在的,那在此,我今天为大家准备准备下需要了解和学习的内容吧。

简单梳理一下现在互联网公司面试的技术内容,同时也希望和大家一起交流讨论,一起学习,如果不对之处欢迎指正一起学习。本文即是复习思路,亦可当做学习思路。

目前 JAVA 工程师复习分为如下几个方向

1,Java基础(重点) : JVM原理,排序算法,Java 集合及工具类,多线程及 并发包,设计模式(23种);

2,存储相关:MySQL、Redis、MongoDB等;

3,项目框架:Spring,SpringMVC,Spring Boot;

4,分布式相关:Dubbo,Spring Cloud,Zookeeper,Eureka;

5,其他:Linux,代码优化,文件服务器(如:FastDFS)等;

下面,我就简单的对这个内容介绍下如何去复习,但具体能否有效,这个因人而异,这里仅提供给大家作为学习的建议和参考。

Java基础

说到Java,首先就是JVM ,这个还是建议大家去深入的看下书籍,因为这是每一个开发人员必备的技能,推荐国内中文版的《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第 2 版)》,当然了如果你的英文好强烈推荐看 Oracle 最新发布的 JAVA 虚拟机规范。在阅读的时候切记不能图快,要对知识的积累不是通过看书的数量来决定,而是看书的深度。不过对于一些初中级的Coder,如果想快速了解复习,那建议还是网上找个培训的视频,多看几遍,这样效率更高。

其次,排序算法、Java 集合及工具类这块,还得结合一些实际的例子多去练习,程序员要的就是动手的能力。这一个分类是每一个人必须掌握的并熟练使用的,那么为什么我把他们放在一起呢? 因为工具和集合类都源于算法,在准备算法复习之前你要理解,为什么要必考算法。正式因为排序算法和我们编程息息相关。之所以排序算法和 JAVA 集合及工具类 一样重要是因为它们和我们每天的编程息息相关。面试官总是问排序算法也不是在难为你,而是在考察你的编程功底。所以你需要对着排序算法和基本的算法配合 JAVA 的集合类、工具类仔细的研究一番,这样才能更深入的理解他们的关联关系。

再次,多线程和并发包,重要性就不累述了,直接说一下学习方法。你首先要理解多线程不仅仅是 Thread 和 Runnable 那么简单,整个并发包下面的工具都是在为多线程服务。对于多线程的学习切不可看几篇面试文章,或者几个关键字 CountDownLatch,Lock 巴拉巴拉就以为理解了多线程的精髓。

存储相关

数据存储作为每个软件项目的重点,因此数据库也是我们必须学习的重点内容。基于Mysql数据库,从简单的SQL优化,函数的使用,到数据库索引、事务锁、触发器、存储过程等,这些都是面试官可能要问你的话题。这个重点还得看之前的工作经验,一时半会也学不了太多,只能了解皮毛。推荐书籍《高性能 MySQL》,可以认真学习巩固下。

不过现在内存式存储工具也是面试中的重点,如:Redis,MongoDB,Memcached。它们作为高速缓存,目前使用最多的要属Redis了。关于Redis的书籍可以推荐阅读《Redis设计与实现 (数据库技术丛书)》。那我们说说常见的面试题吧!

1)Redis有哪些数据结构?

2)Redis与MongoDB、Memcached的区别?

3)使用redis有哪些好处?

4)Redis如何做持久化的?

5)是否使用过Redis集群,集群的原理是什么?

项目框架

一谈框架就想起来 Spring,一说 Spring 就想起来 IOC,AOP。因为大家都在用这个框架,所以对于框架也不需要看一些其他的,直接就深入了解一下 Spring 就可以了。通过上面的叙述你已经了解了小编的思路,看什么都要看他的实现原理,所以直接推荐你一本书《Spring 技术内幕》然后对着自己现有的 Spring 项目 Debug,从请求的流转梳理知识点。Spring 出来这么久大家对基本的知识已经了然于胸,重要的是看其解决问题的思路和原理。

比如需要实现在 Bean 刚刚初始化的时候做一些操作,是不是需要使用InitializingBean?那么具体怎么使用,它的原理是什么,Spring Bean 的生命周期是什么样子,通过具体的使用场景逐步展开说明。这样复习效果会更好一些,然后再逐步的思考每一个知识点里面涉及的更多的知识点,比如 AOP 里面的 Proxy 都是基于什么原理实现,有什么优缺点。

目前网络公司,只要是分布式开发,SpringBoot就是个热门面试的话题。这个大家一定的学习了解,要知其然知其所以然。比如面试官问你,什么是SpringBoot,为什么要用SpringBoot,SpringMVC和SpringBoot有什么区别,及SpringBoot配置等相关?这是面试官最常见的问题。

分布式

Java项目目前最流行的莫过于分布式开发了,而却这也是一个老生常谈的话题,近几年非常的火,说起分布式,如果你只知道Dubbo,那可真就out了。目前流行的分布式开发有:Dubbo和SpringCloud,他们在很多地方有很大的区别。首先,他们都是用来解决分布式服务治理,都需要注册中心来注册服务(提供者和消费者模式)。

主要区别:

1)dubbo由于是二进制的传输(RPC协议),占用带宽会更少;而springCloud是 http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗 会更大;

2)dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解 决;而Springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施 来限制接口无序升级;

3)dubbo的注册中心可以选择zk,redis等多种,springcloud的注册中心只能用 Eureka或者自研

基于Dubbo和Spring Cloud的技术栈比较:

Dubbo

Spring Cloud

服务注册中心

Zookeeper

Spring Cloud Netflix Eureka

服务调用方式

RPC

REST API

服务监控

Dubbo-monitor

Spring Boot Admin

服务网关

Spring Cloud Netflix Zuul

断路器

不完善

Spring Cloud Netflix Hystrix

分布式配置

Spring Cloud Config

服务跟踪

Spring Cloud Sleuth

消息总线

Spring Cloud Bus

数据流

Spring Cloud Stream

批量任务

Spring Cloud Task

目前国内的中小民营科技公司,大多数都在使用Dubbo作为分布式开发的服务治理,而合资和外资公司基本都在使用SpringCloud。但目前由于Dubbo技术栈瓶颈问题,导致好多中小公司的项目做着做着就出现很多问题,如:服务跟踪、服务熔断等无法解决,现在也有部分公司在慢慢向SpringCloud转型。但这里我要申明的是,技术选型都是基于项目的需求和业务,并非SpringCloud就比Dubbo好,各有各的优势,毕竟Dubbo也在阿里这个大型电商平台服役过多年。

其他方面

Java程序员面试,不是把上面我说的那些学好就可以的,如果你有这想法就大错特错。我曾经的一次面试,由于对Linux操作经验不足直接就被人家指走。人家还告诉我,Linux应作为每个开发者必备的技能。所以,在平时的开发中,一定要多了解和学习Linux的使用,不要认为Linux下的环境配置和服务发布是运维的事情。其次,对一个有一两年及以上工作经验的面试者,代码优化和项目规范等可能也是某些面试官常问的问题。在此我大概总结一下,供大家参考。

1)Linux操作及基本命令;

2)代码优化及范及;

3)WebService相关问题;

4)接口安全(涉及加密算法)(高级工程师);

5)高并发、集群及负载均衡(高级工程师);

6)其他开放性问题;

说了这么多,我想大家大概也知道该复习该看什么了。但也不要忘了自己工作经历的项目,在准备跳槽面试前,一定得认认真真总结一下,尤其是用到的一些技术,曾经遇到的技术难点和突破点,都是如何解决的,这是面试官很看重的。我们学了这么多,最终都是要去解决技术问题的,这才是我们的价值所在。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 攻城狮的那点事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 其次,排序算法、Java 集合及工具类这块,还得结合一些实际的例子多去练习,程序员要的就是动手的能力。这一个分类是每一个人必须掌握的并熟练使用的,那么为什么我把他们放在一起呢? 因为工具和集合类都源于算法,在准备算法复习之前你要理解,为什么要必考算法。正式因为排序算法和我们编程息息相关。之所以排序算法和 JAVA 集合及工具类 一样重要是因为它们和我们每天的编程息息相关。面试官总是问排序算法也不是在难为你,而是在考察你的编程功底。所以你需要对着排序算法和基本的算法配合 JAVA 的集合类、工具类仔细的研究一番,这样才能更深入的理解他们的关联关系。
  • 存储相关
  • 项目框架
  • 分布式
  • 其他方面
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档