自测面试工作3年的程序员应掌握的技能

一名3年工作经验的Java程序员应该具备的技能,不是必须全都具备,但如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。

1、基本语法

这包括static、final、transient等关键字的作用,foreach循环的原理等等。假如今天面试我问你static关键字有哪些作用,如果你答出static修饰变量、修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满意,因为能看出你非常热衷研究技术。

2、集合

集合要掌握的

是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现原理,能流利作答,当然能掌握CopyOnWrite容器和Queue是再好不过的了。

ConcurrentHashMap的问题在面试中问得特别多,大概是因为这个类可以衍生出非常多的问题,关于ConcurrentHashMap,有三点需要注意:

(1)ConcurrentHashMap的锁分段技术

(2)ConcurrentHashMap的读是否要加锁,为什么

(3)ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器

3、设计模式

设计模式在工作中还是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,面试中关于设计模式的问答主要是三个方向:

(1)你的项目中用到了哪些设计模式,如何使用

(2)知道常用设计模式的优缺点

(3)能画出常用设计模式的UML图

4、多线程

假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?

5、JDK源码

要想拿高工资,JDK源码不可不读。总结一下比较重要的源码:

(1)List、Map、Set实现类的源代码

(2)ReentrantLock、AQS的源代码

(3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的

(4)线程池的实现原理

(5)Object类中的方法以及每个方法的作用

6、数据库

数据库十有八九也都会问到。一些基本的像union和unionall的区别、leftjoin、几种索引及其区别就不谈了,比较重要的就是数据库性能的优化,如果对于数据库的性能优化一窍不通,那么有时间,还是建议你在面试前花一两天专门把SQL基础和SQL优化的内容准备一下。

7、数据结构和算法分析

数据结构和算法分析,对于一名程序员来说,会比不会好而且在工作中 能派上用场。数组、链表是基础,栈和队列深入一些但也不难,树挺重要的,比较重要的树AVL树、红黑树,可以不了解它们的具体实现,但是要知道什么是二叉查找树、什么是平衡树,AVL树和红黑树的区别。

8、Java虚拟机

Java虚拟机中比较重要的内容:

(1)Java虚拟机的内存布局

(2)GC算法及几种垃圾收集器

(3)类加载机制,也就是双亲委派模型

(4)Java内存模型

(5)happens-before规则

(6)volatile关键字使用规则

也许面试无用,但在走向大牛的路上,不可不会。

每天记录一点,每天进步一点。

注册自由职客,开启全新自由之旅!

自由职客金牌服务等待你的召唤!

我们所有的改变,只是为了给您更好的服务

▼▼▼

海量需求任你选择

匹配直接沟通

透明交易拒绝差价

企业成本降低5%以上

还在犹豫什么?

加入自由职客,掌握属于自己的生活

赞赏

长按







































白癜风能治好
天津市治疗白癜风医院



转载请注明:http://www.xxcyfilter.com/zyxz/6896.html