Java面试居然有这么多学问,看看高级程序员面试题是什么样的

转载 2017年06月07日 11:08:15

Java面试居然有这么多学问,看看高级程序员面试题是什么样的

java 面试跟着时刻的改动而改动。在曩昔的日子里,当你知道 String 和 StringBuilder 的差异就能让你直接进入第二轮面试,可是如今疑问变得越来越高档,面试官问的疑问也更深入。 在我初入职场的时分,类似于 Vector 与 Array 的差异、HashMap 与 Hashtable 的差异是最盛行的疑问,只需求记住它们,就能在面试中取得更好的时机,但这种景象已经不复存在。如今,你将会被问到许多 Java 程序员都没有看过的范畴,如 NIO,规划形式,老练的单元测验,或许那些很难掌握的知识,如并发、算法、数据结构及编码。

伪同享疑问很难被发现,由于线程也许拜访完全不同的全局变量,内存中却碰巧在很附近的位置上。如别的诸多的并发疑问,防止伪同享的最基本办法是细心检查代码,根据缓存行来调整你的数据结构。

Java面试居然有这么多学问,看看高级程序员面试题是什么样的

1)啥是 Busy spin?咱们为啥要运用它?

Busy spin 是一种在不开释 CPU 的基础上等候事情的技术,它常常用于防止丢掉 CPU 缓存中的数据(假如线程先暂停,以后在别的CPU上运转就会丢掉)。所以,假如你的作业要求低延迟,而且你的线程现在没有任何次序,这么你就能够经过循环检查行列中的新消息来替代调用 sleep() 或 wait() 办法。它唯一的优点即是你只需等候很短的时刻,如几微秒或几纳秒。LMAX 分布式框架是一个高性能线程间通讯的库,该库有一个 BusySpinWaitStrategy 类即是根据这个概念完成的,运用 busy spin 循环 EventProcessors 等候屏障。

2)Java 中怎样获取一份线程 dump 文件?

在 Linux 下,你能够经过指令 kill -3 PID (Java 进程的进程 ID)来获取 Java 运用的 dump 文件。

在 Windows 下,你能够按下 Ctrl + Break 来获取。 那么 JVM 就会将线程的 dump 文件打印到规范输出或过错文件中,它也许打印在控制台或日志文件中,具体位置依靠运用的装备。假如你运用Tomcat。

3)Swing 是线程安全的?

不是,Swing 不是线程安全的。你不能经过任何线程来更新 Swing 组件,如 JTable、JList 或 JPanel,事实上,它们只能经过 GUI 或 AWT 线程来更新。这即是为啥 Swing 供给 invokeAndWait() 和 invokeLater() 办法来获取别的线程的 GUI 更新求。这些办法将更新求放入 AWT 的线程行列中,能够一向等候,也能够经过异步更新直接回来成果。你也能够在参考答案中检查和学习到更具体的内容。

4)啥是线程局部变量?

线程局部变量是局限于线程内部的变量,属于线程自身一切,不在多个线程间同享。Java 供给 ThreadLocal 类来支撑线程局部变量,是一种完成线程安全的办法。可是在办理环境下(如 web 服务器)运用线程局部变量的时分要格外当心,在这种情况下,作业线程的生命周期比任何运用变量的生命周期都要长。任何线程局部变量一旦在作业完成后没有开释,Java 运用就存在内存泄露的危险。

5)用 wait-notify 写一段代码来解决生产者-消费者疑问?

请参考答案中的示例代码。只需记住在同步块中调用 wait() 和 notify()办法,假如堵塞,经过循环来测验等候条件。

6) 用 Java 写一个线程安全的单例形式(Singleton)?

请参考答案中的示例代码,这里面一步一步教你创立一个线程安全的 Java 单例类。当咱们说线程安全时,意思是即使初始化是在多线程环境中,依然能保证单个实例。Java 中,运用枚举作为单例类是最简略的办法来创立线程安全单例形式的办法。

7)Java 中 sleep 办法和 wait 办法的差异?

尽管两者都是用来暂停当前运转的线程,可是sleep() 实际上仅仅短暂中止,由于它不会开释锁,而 wait() 意味着条件等候,这即是为啥该办法要开释锁,由于只要这么,别的等候的线程才能在满足条件时获取到该锁。

8)啥是不可变目标(immutable object)?Java 中怎样创立一个不可变目标?

不可变目标指目标一旦被创立,状况就不能再改动。任何修正都会创立一个新的目标,如 String、Integer及其它包装类。概况拜见答案,一步一步指导你在 Java 中创立一个不可变的类。

9)咱们能创立一个包括可变目标的不可变目标吗?

是的,咱们是能够创立一个包括可变目标的不可变目标的,你只需求慎重一点,不要同享可变目标的引证就能够了,假如需求变化时,就回来原目标的一个复制。最常见的比如即是目标中包括一个日期目标的引证。

喜欢小编文章的欢迎关注,欢迎评论,欢迎转发,小编会继续努力的!!!!

Java面试居然有这么多学问,看看高级程序员面试题是什么样的

Java高级程序员(5年左右)面试的题目集

时隔两年,再一次的面临离职找工作,这一次换工作有些许的不舍,也有些许的无奈。个人所在的技术团队不错,两年时间成长了很多,也很不舍这个团队。但是,由于公司的某些原因和对于自身未来发展的综合考虑,又不得不...
  • fangqun663775
  • fangqun663775
  • 2017年06月23日 11:27
  • 2419

15个顶级Java多线程面试题及回答 / Java程序员面试中的多线程问题

http://wenku.baidu.com/link?url=-7RVShQCzkHaRbyPdGP-oeVXgZ7t4mS2oqXevpzweesI_Heof5zqc_Wsvhhi8pZSU7xQ...
  • liangxw1
  • liangxw1
  • 2016年04月19日 07:01
  • 26755

.NET 程序员面试题(持续更新)至少100多公司使用过的面试题[经典中的经典]

.NET 程序员面试题(持续更新)至少100多公司使用过的面试题[经典中的经典] 1.重载(Overload )和覆写(override)的区别 答: 方法重载:当类包含两个名称相同但签名不同...
  • zfrong
  • zfrong
  • 2010年05月30日 14:10
  • 11841

阿里java高级工程师面试题

阿里巴巴、美团技术、平安科技等面试题 1,java堆,分新生代老年代,新生代有Eden,from surviver,to surviver三个空间,堆被所有线程共。eden内存不足时,发生一次mi...
  • zhanjianshinian
  • zhanjianshinian
  • 2017年08月10日 21:22
  • 5549

Java开发面试题大汇总,年薪30万的面试题你能答出多少?

最近有很多朋友在问,年后打算跳槽,这两个月该怎么准备,针对这些问题,我总结了一套年薪30万左右Java开发面试题,虽然还落了一下没写,但是我感觉完全掌握这些,年薪30万是没有问题的,下面来看看这些面试...
  • Gupaoxueyuan
  • Gupaoxueyuan
  • 2018年01月07日 14:36
  • 450

面试题总结 —— JAVA高级工程师

转自: http://blog.csdn.net/moneyshi/article/details/50786786 面试题总结——JAVA高级工程师 近期考虑换工作的问题...
  • kingmax54212008
  • kingmax54212008
  • 2016年07月27日 23:31
  • 19798

「独家」阿里、百度面试Java高级程序员的面试题及答案

马上又要到跳槽季了,之前在前些时间面试了十多家的大型的互联网公司也拿到了几个Offer,面试接触之后感慨颇多,决定给大家分享一手的面试资料,让你们以后万一遇到有相似的问题时提前的能做好准备 我现在主...
  • qq_39627461
  • qq_39627461
  • 2018年01月21日 16:27
  • 196

JAVA程序员面试总结,高手整理加强版

JAVA程序员面试总结,高手整理加强版
  • javaniuniu
  • javaniuniu
  • 2016年06月30日 10:12
  • 6506

JAVA高级程序员面试三十二问

第一,谈谈final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为...
  • peter_666
  • peter_666
  • 2009年10月14日 10:07
  • 3379

程序员这样面试,拿到offer的几率是80%

一、概述 面试,难还是不难?取决于面试者的底蕴(气场+技能)、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判,在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑:“面试...
  • wan23333
  • wan23333
  • 2017年12月19日 20:51
  • 469
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java面试居然有这么多学问,看看高级程序员面试题是什么样的
举报原因:
原因补充:

(最多只允许输入30个字)