【凯发旗舰官网】国信安教育 | 中国电科旗下高技能it教育培训机构-凯发旗舰

中国电科旗下高技能it教育培训机构

当前位置: 凯发旗舰-凯发k8国际手机app下载 公司动态 > 行业新闻 > java程序员3年,应该具备什么样的技能,才能不被行业淘汰

java程序员3年,应该具备什么样的技能,才能不被行业淘汰

2018-08-22 18:23:53

一名3年工作经验的java程序员应该具备的技能,这可能是java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。


1

基本语法



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

    最深入的一次,我记得面试官直接问到了我volatile关 键字的底层实现原理(顺便插一句,面试和被面试本身就是相对的,面试官能问这个问题同时也让面试者感觉到面试官也是一个喜爱研究技术的人,增加了面试者对 公司的好感,我最终选择的就是问了这个问题的公司),不要觉得这太吹毛求疵了—-越简单的问题越能看出一个人的水平,别人对你技术的考量绝大多数都是以深度优先、广度次之为标准的,切记。



2

集合


    非常重要,也是必问的内容。基本上就是list、map、set,问的是各种实现类的底层实现原理,实现类的优缺点。

    集合要掌握的是arraylist、linkedlist、hashtable、hashmap、concurrenthashmap、 hashset的实现原理,能流利作答,当然能掌握copyonwrite容器和queue是再好不过的了。另外多说一 句,concurrenthashmap的问题在面试中问得特别多,大概是因为这个类可以衍生出非常多的问题,关于concurrenthashmap, 我给网友朋友们提供三点回答或者是研究方向:

    (1) concurrenthashmap的锁分段技术。

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

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



3

框架


    老生常谈,面试必问的东西。一般来说会问你一下你们项目中使用的框架,然后给你一些场景问你用框架怎么做,



比如:我想要在spring初始化bean 的时候做一些事情该怎么做?

         想要在bean销毁的时候做一些事情该怎么做?

         mybatis中$和#的区别等等



    这些都比较实际了,平时积累得好、有多学习 框架的使用细节自然都不成问题。


    如果上面你的问题答得好,面试官往往会深入地问一些框架的实现原理。问得最多的就是spring aop的实现原理,当然这个很简单啦,两句话就搞定的的事儿,即使你不会准备一下就好了。


    不过数据库倒是不用担心,一家公司往往有很多部门,如果你对数据库不熟悉而基本技术又非常好,九成都是会要你的,估计会先把你放到对数据库使用不是要求非常高的部门锻炼一下。



4

web方面的一些问题


    java主要面向web端,因此web的一些问题也是必问的。


    我碰到过问得最多的两个问题是:

    谈谈分布式session的几种实现方式。(大家可以聊下你们知道的实现方法)常用的四种能答出来自然是让面试官非常满意的。


    另外一个常问的问题是:讲一下session和cookie的区别和联系以及session的实现原理。这两个问题之外,web.xml里面的内容是重点,filter、servlet、listener,不说对它们的实现原理一清二楚吧,至少能对它们的使用知根知底。另外,一些细节的方面比如get/post的区别、forward/重定向的区别、https的实现原理也都可能会被考察到。



5

数据结构和算法分析


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



6

java虚拟机


    出乎我的意料,java虚拟机应该是很重要的一块内容,结果在这几家公司中被问到的概率几乎为0。


    言归正传,虽然java虚拟机没问到,但我觉得还是有必要研究的,我就简单地列一个提纲吧,谈谈java虚拟机中比较重要的内容:



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

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

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

(4) java内存模型

(5) happens-before规则

(6) volatile关键字使用规则



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



7

设计模式


    本来以为蛮重要的一块内容,结果只在阿里巴巴b2b事业部面试的时候被问了一次,当时问的是装饰器模式。

    当然咱们不能这么功利,为了面试而学习,设计模式在工作中还是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,面试中关于设计模式的问答主要是三个方向:



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

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

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



    


8

多线程


    这也是必问的一块了。因为三年工作经验,所以基本上不会再问你怎么实现多线程了,会问得深入一些比如说thread和runnable的区别和联 系、多次start一个线程会怎么样、线程有哪些状态。当然这只是最基本的,出乎意料地,几次面试几乎都被同时问到了一个问题,问法不尽相同。

    总结起来是这么一个意思:

    假如有thread1、thread2、thread3、thread4四条线程分别统计c、d、e、f四个盘的大小,所有线程都统计完毕交给thread5线程去做汇总,应当如何实现?



9

jdk源码


    要想拿高工资,jdk源码不可不读。上面的内容可能还和具体场景联系起来,jdk源码就是实打实地看你平时是不是爱钻研了。我面试过程中被问了不 少jdk源码的问题,其中最刁钻的一个问了我,string的hashcode()方法是怎么实现的,幸好我平时string源代码看得多,答了个大 概。

    jdk源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:



(1) list、map、set实现类的源代码

(2) reentrantlock、aqs的源代码

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

(4) 线程池的实现原理

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




    这些其实要求蛮高的,我去年一整年基本把jdk中重要类的源代码研究了个遍,真的花费时间、花费精力,当然回头看,是值得的—-不仅仅是为了应付面试。


    最后,如果有兴趣有时间,建议学习、研究一下soa和rpc,面向服务体系,大型分布式架构必备,救命良方、包治百病、屡试不爽。



出处:https://segmentfault.com/a/1190000015654304

本文转载自【架构之路】

相关推荐

网站地图