PreparingInterview

前期准备(需要排个顺序)

  • 自我介绍
  • 面向对象三大特性
    • 封装、继承和多态。
    • 封装就是把描述一个对象的属性和行为的代码封装在一个类中,有些属性是不希望公开的,或者说被其他对象访问的,所以我们使用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的公司?公司最吸引你的是什么?
  • 评价一下我?