前期准备(需要排个顺序)
- 自我介绍
- 面向对象三大特性
- 封装、继承和多态。
- 封装就是把描述一个对象的属性和行为的代码封装在一个类中,有些属性是不希望公开的,或者说被其他对象访问的,所以我们使用private修饰该属性,使其隐藏起来;类中提供了方法(用public修饰),常用的是get、set方法,可以操作这些被隐藏的属性,其他类可以通过调用这些方法,改变隐藏属性的值!封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。
- 继承:在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,使用extends关键字实现继承;子类中可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。
- 多态:多态就是在声明时使用父类,在实现或调用时使用具体的子类;即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性,多态增强了软件的灵活性和扩展性。这里可以举个例子,比如声明时使用的是动物类,调用时传递的是一个猫类(动物类的子类)的对象,具体执行父类里动物——吃的方法时,实际执行的是猫——吃的方法。
- 语言基础,String类可以被继承吗?为什么?
不可以。final修饰的类不可被继承。
- Final能修饰什么?(当时我说class、field、method,他说还有吗?然后又叫我不要在意,后来回想起,应该是问到我在参数里面要不要用final,接下来是因为匿名内部类)
final 用于声明属性,方法和类,分别表示属性不可变,方法不可重写,类不可继承。
final还可以修饰形参,以防止形参数据在方法体里被修改。主要分两种情况:第一,用final修饰基本数据类型;第二,用final修饰引用类型,不推荐。 - 静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?
- 静态内部类:使用static修饰的内部类
- 匿名内部类:使用new生成的内部类
- 因为内部类的产生依赖于外部类,持有的引用是类名.this。
- 跨进程间通信
- Java中try catch finally的执行顺序
先执行try中代码发生异常执行catch中代码,然后执行try里面的return语句,在return返回之前执行finally中代码,也就是finally在return执行后返回前执行,如果catch、finally中有return,则会按照执行顺序覆盖前面的return语句里的值。
- switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持使用char、byte、short、int类型,不支持long类型,String支持在java1.7引入
- 介绍一下你的项目
- 项目中遇到哪些问题,如何解决的?
- 熟不熟JVM,说一下JVM的自动内存管理
- Java中有内存泄露吗?(先说本质,再结合handler+匿名内部类)当时如何分析的?
内存泄露是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄露。
- Java虚拟机,垃圾回收
- Java的垃圾回收机制,引用计数法两个对象互相引用如何解决?
- 用过什么开源,举一个例子
- 用过的开源框架的源码分析
实践类
- 面试官给程序,看错误
- Debug和Release状态的不同
- 标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
- 给定一个字符串,求第一个不重复的字符 abbcad -> c
- 写代码,反转字符串
- 写代码,字符串中出现最多的字符
- 快速排序
- 有一个容器类 ArrayList,保存整数类型的元素,现在要求编写一个帮助类,类内提供一个帮助函数,帮助函数的功能是删除 容器中<10的元素。
HR面试
- 以后想做什么方向?
- 优缺点?兴趣?
- 为什么想来HR的公司?公司最吸引你的是什么?
- 评价一下我?