四年Java工作经验已经不短了,应该要有比较高的技术水准。

1、集合

几乎是面试必问的内容,问的基本是底层实现原理,实现类的优缺点。

2、设计模式

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

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

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

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

3、多线程

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

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

4、IO

IO分为File IO和Socket IO,File IO基本上是不会问的,问也问不出什么来,平时会用就好了,另外记得File IO都是阻塞IO。

Socket IO是比较重要的一块,要搞懂的是阻塞/非阻塞的区别、同步/异步的区别,借此理解阻塞IO、非阻塞IO、多路复用IO、异步IO这四种IO模型,Socket IO如何和这四种模型相关联。这是基本一些的,深入一些的话,就会问NIO的原理、NIO属于哪种IO模型、NIO的三大组成等等,这有些难,当时我也是研究了很久才搞懂NIO。提一句,NIO并不是严格意义上的非阻塞IO而应该属于多路复用IO,面试回答的时候要注意这个细节,讲到NIO会阻塞在Selector的select方法上会增加面试官对你的好感。

5、JDK源码

要想拿高工资,JDK源码不可不读。上面的内容可能还和具体场景联系起来,JDK源码就是实打实地看你平时是不是爱钻研了。面试过程中被问了不少JDK源码的问题,其中最刁钻的一个问了String的hashCode()方法是怎么实现的,幸好平时String源代码看得多。JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:

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

(2)ReentrantLock、AQS的源代码

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

(4)线程池的实现原理

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

6、框架

面试必问的,一般来说会问你项目中使用的框架,然后给你一些场景问你用框架怎么做,比如我想要在Spring初始化bean的时候做一些事情该怎么做、想要在bean销毁的时候做一些事情该怎么做、MyBatis中$和#的区别等等,这些都比较实际了,平时积累得好、有多学习框架的使用细节自然都不成问题。

如果上面你的问题答得好,面试官往往会深入地问一些框架的实现原理。问得最多的就是Spring AOP的实现原理,当然这个很简单,两句话就搞定的事儿,即使你不会准备一下就好了。我遇到的最变态的是让画一下Spring的Bean工厂实现的UML图。

7、数据库

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

8、Java虚拟机

Java虚拟机应该是很重要的一块内容,推荐《深入理解Java虚拟机:JVM高级特性与最佳实践》。

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

1.Java虚拟机的内存布局

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

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

4.Java内存模型

5.happens-before规则

6.volatile关键字使用规

大概就是这些,如果有精力的话,可以学习下数据结构和算法,这对于进去大厂的帮助非常大。

如果你觉得对你有帮助,请不要吝啬,点个赞和喜欢,在加个关注。

java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?相关推荐

  1. java女程序员工作_女生适合做java程序员吗 女java程序员好找工作

    女生适合做java程序员吗 女java程序员好找工作?随着IT行业的飞速发展,程序员越来越受到重视,一些性格比较强势的女生,就也想加入到Java程序员的行列,因为他们感觉女生做这样的事情不会比男生差, ...

  2. 月薪2万java啥水平_月薪2w的Java程序员需要什么样的技术水平呢?

    原标题:月薪2w的Java程序员需要什么样的技术水平呢? 在互联网兴起的时代,大家基本都知道程序员的工资高,但并不代表每一个程序员的工资都很高.因为工资的高低也与程序员个人的技术水平有关.今天巨牛汇外 ...

  3. java编写代码用什么_如何学习用Java编写代码:为什么要学习以及从哪里开始

    java编写代码用什么 by John Selawsky 约翰·塞劳斯基(John Selawsky) 如何学习用Java编写代码:为什么要学习以及从哪里开始 (How to learn to cod ...

  4. java寻找最大的字母_【LeetCode(Java) - 744】寻找比目标字母大的最小字母

    [LeetCode(Java) - 744]寻找比目标字母大的最小字母 [LeetCode(Java) - 744]寻找比目标字母大的最小字母 文章目录 1.题目描述 2.解题思路 3.解题代码 1. ...

  5. java 管理多个进程_管理多个Java安装

    java 管理多个进程 随着越来越多的Java版本发布,在本地环境中管理多个Java安装将变得更加有趣. 不同的项目可能需要不同的Java版本. jenv项目是管理Java安装的便捷方法. 它可以在全 ...

  6. java c++ python哪个好_程序员学java好还是python语言好 c++又如何

    技术程序员学Java.C++.Python... 分析对比,到底学什么语言吃香,哪种语言最靠谱,如何学好这些语言呢? 几天前,我们在知识上看到这样一个问题:"java,C++,Python, ...

  7. java犀牛是什么意思_深入浅出Rhino:Java与JS互操作

    2011年10月6日,一年一度的JavaOne大会隆重举行.JavaOne2011大会的主题之一介绍针对不同Java平台的产品路线图,这其中包括移动版(ME,Micro Edition).标准版(SE ...

  8. java国际化 英语的标识符_(转)Java 国际化

    1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, 为了解决这个问题Java给我们提供了一个工具类ResourceBundle, 帮助我们实现Java的国际 ...

  9. java版我的世界_我的世界Java版1.16

    我的世界Java版1.16是我的世界的特殊版本,这个版本的我的世界深受玩家们的喜欢,小编为各位玩家带来了最新的我的世界Java版1.16手机版本,不仅游戏内容在一定程度上丰富十足,画面打造也非常的精美 ...

最新文章

  1. 当你学不进去的时候,试试“普瑞马法则
  2. 修改Kali Linux终端主题
  3. JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系
  4. 单继承-问题的抛出-单纯封装可能会出现重复的代码
  5. swagger2注解说明文档
  6. android webview参数,Android webView解析URL参数
  7. python多线程写日志_python 应用logging多线程写多个log文件
  8. Python利用matplotlib.animation和matplotlib.pyplot和ffmpeg录制动画并保存为MP4文件
  9. git add * 提示warning: LF will be replaced by CRLF in 解决办法
  10. 做“是非题”的正确姿势
  11. adb命令检测apk启动时间、内存、CPU使用情况、流量、电池电量等——常用的adb命令...
  12. SyntaxError:identifier starts immediately after numeric literal
  13. Django博客--5.让博客支持 Markdown 语法和代码高亮
  14. docker mysql8
  15. DirectFB 之 FillRectangle 绘制矩形
  16. 管理感悟:人才如何分级
  17. Linux设备驱动入门
  18. 项目文件3 项目范围说明书、项目团队派工单、质量控制测量结果、质量测量指标、质量报告、需求文件、需求跟踪矩阵、 资源分解结构
  19. 2022DIY电脑配置入门篇(包含各cpu显卡天梯图对比)
  20. 解析2019年新零售社区团购发展方向

热门文章

  1. 组件和模块间Activity路由框架
  2. Java虚拟机 —— 垃圾回收机制
  3. textAngular字体依赖
  4. React Native开发之npm start加速
  5. 定时任务:Java中Timer和TimerTask的使用
  6. T4文本模板转换过程
  7. eclipse的默认(打开)编辑器的更改
  8. 双绞线,同轴电缆和光纤电缆之间的区别—Vecloud微云
  9. python 字符串的一些方法
  10. 洛谷 P1851 好朋友