Java程序员面试中容易被问哪些问题?

由于我每年都会面试不少程序员,其中就包括相当数量的Java程序员,所以就这个问题,跟头条的广大网友交流一下。Java工程师面试也是有一定的侧重点,做不同的研发方向,问题上也有所区别。另外,初级程序员与主力程序员的面试问题也有很大的不同,总的来说就是方向与定位相结合,下面为大家一一描述。Java初级程序员面试面试Java初级程序员的流程相对来说比较简单,通常是两轮面试,首轮面试一般进行技术面试,次轮面试通常是有HR统一安排关于职业规划以及心理方面的面试(大部分情况是走个流程),这两轮面试中,技术面试起到了关键的作用。

面试初级程序员(2-3级)一般从技术细节入手,要通过面试,首先要知道初级程序员都需要具备哪些能力。下面先描述一下作为一个Java初级程序员(2-3级,Web方向为主)应该满足哪些要求:清晰Java面向对象编程步骤,理解封装、继承、多态等核心概念,理解基本的前端内容(HTML、CSS、JavaScript)。

能理解程序流程图描述的功能需求,能独立完成功能模块的编写、部署,能理解功能模块之间的交互关系,能完成功能模块之间的消息传递和处理。能理解MVC、DAO等框架,并在实际开发中熟练使用,能独立完成前后台的数据处理,能完成各种认证功能的处理。能使用数据库连接池等基本优化方式提高程序运行效率。能理解容器在程序运行中的作用,能配置各种容器的基本参数。

对程序的安全性有一定的理解,能避免初级的安全性问题。能处理一定数量的并发问题,能解决多线程情况下的数据安全问题。能理解不同角色的任务分配,能进行有效沟通。常见框架的使用,比如SpringMVC等。初级程序员的工作往往是编写程序基本功能组件,是保证程序质量的一个重要环节,所以团队的整体能力往往并不是由架构师决定的,反而是由众多的初级程序员决定的。

Java主力程序员面试主力程序员的面试通常要3轮或4轮,当然如果你走到了后面的两轮,基本上选择权就在你手里了,后面的两轮面试公司会给你安排一个看似比较美好的职业发展规划,因为主力程序员不仅要编码通常还承担者一部分管理工作(项目责任人),也是管理层比较倚重的。主力程序员的技术面试流程并没有那么多细节问题,首先要了解一下做过哪些项目,在项目中都承担了什么任务,项目中遇到了哪些问题,怎么解决的等等。

通常主力程序员的面试时间也比较长(2至3个小时),面试的氛围也比初级程序员要轻松很多。主力程序员大部分是推荐上来的,有人力资源公司推荐的,也有公司内推上来的,当然也有主动投送简历要求面试的。一般对主力程序员都会有背景调查,这一方面是对公司负责,另一方面也是对应聘者应有的尊重。希望通过我的回答,大家能对Java程序员的面试有一个基本的了解。

JVM-GC垃圾回收算法中,如何判定一个对象是否是可回收的对象?

首先明确对象(引用)类型:1 软引用 SoftReference有些用,但是并非必需,用软引用关联的对象,系统将要发生OOM(out of memory)之前,这些对象就会被回收。2 弱引用3 虚引用 PhantomReference最弱,被垃圾回收的时候会收到一个通知。4 强引用new创建。软引用、弱引用在jdk1.2才有。

一般使用强引用,内存不够情况例外。软引用(SoftReference)和弱引用 (WeakReference),有时候做缓存使用。如何判断对象是否可以被回收?方法一、引用计数法顾名思义,计算对象被引用的次数。但是引用计数法已经落后了,可达性分析能够解决互相引用的问题(两种方法都是基于强引用)。方法二、可达性分析可达性指GC Root能否找到某一对象,如果不能该对象可大致(不绝对,后面会讲)认为能够被回收。

以下对象可以作为GC Root:注意,不需要死记硬背。可以这么思考:Java中变量总共四类——局部变量、静态变量 、常量、成员变量。方法区中常量引用的对象即局部变量;而虚拟机栈和本地方法栈是线程运行时创建的,里面引用的对象需要被使用,不能被回收。不可达一定会被回收吗?对象不可达(第一次标记),而且没有在方法finalize()重新建立引用链条(第二次标记)的情况下,将会被回收。


文章TAG:gc100  root  ChimeraTool  root  
没有了