简历制作
个⼈建议,简历模板尽量朴素⼀点,不需要太花⾥胡哨的,主要体现⾃⼰的⼀些特点和技能
即可,另外就是将简历制作的更加精细,尽量浓缩到⼀⻚即可,以上这些是个⼈建议。
需要简历模板,可以在我们公众号:代码界的⼩⽩,后台回复:简历模板
可以领取100+简历模板,还有简历书写推⽂。
需要修改简历,可以加⼩⽩微信,把⾃⼰的简历发我们微信。
更多Java⾯试⼋股、Java后端实战项⽬、更多互联⽹春招、实习、秋招等经验分享,
可以上微信搜索公众号:代码界的⼩⽩,和⼩⽩⼀起学编程!
这⾥给⼤家分享的⼋股是⼀些⽐较⾼频的,可能不太全⾯。
如果⼤家需要更全⾯的⼋股⽂,可以在公众号后台回复:Java电⼦版资料
JAVA基础
基础知识⾼频⾯试问题
1.Java语⾔的三⼤特性是什么?
参考答案:Java语⾔的三⼤特性分别是封装、继承和多态。
封装是指将对象的属性私有化,提供⼀些可以访问属性的⽅法,我们通过访问这些⽅法得到
对象的属性。
继承是指某新类继承已经存在的类,该新类拥有被继承的类的所有属性和⽅法,并且新类可
以根据⾃⼰的情况拓展属性或⽅法。其中新类称为⼦类,原存在的类被称为⽗类。
1. ⼦类拥有⽗类对象所有的属性和⽅法(包括私有属性和私有⽅法),但是⽗类中的私有
属性和⽅法⼦类是⽆法访问,只是拥有。
2. ⼦类可以拥有⾃⼰属性和⽅法,即⼦类可以对⽗类进⾏扩展。
3. ⼦类可以⽤⾃⼰的⽅式实现⽗类的⽅法。
注意:Java不⽀持多继承
多态是同⼀个⾏为具有多个不同表现形式或形态的能⼒。多态就是同⼀个接⼝,使⽤不同的
实例⽽执⾏不同操作
多态是指程序中定义的引⽤变量所指向的具体类型和通过该引⽤变量发出的⽅法调⽤在
编程时并不确定,⽽是在程序运⾏期间才确定,即⼀个引⽤变量到底会指向哪个类的实
例对象,该引⽤变量发出的⽅法调⽤到底是哪个类中实现的⽅法,必须在由程序运⾏期
间才能决定。【摘⾃JavaGuide】
在 Java 中有两种形式可以实现多态:继承(多个⼦类对同⼀⽅法的重写)和接⼝(实现接
⼝并覆盖接⼝中同⼀⽅法)。
2.重载与重写的区别
参考答案:
重载是发⽣在同⼀个类中,具有相同的⽅法名,但是有不同的参数,参数的个数不⼀样、参
数的位置不⼀样,这就叫重载,常⻅的就⽐如构造⽅法,有有参构造和⽆参构造。
重写是发⽣在当⼦类继承⽗类时,对⽗类中的⼀些⽅法根据⾃⼰的需求进⾏重写操作。
3.接⼝和抽象类的区别是什么?
参考答案:
接⼝(interface)和抽象类(abstract class)是⽀持抽象类定义的两种机制。
接⼝是公开的,不能有私有的⽅法或变量,接⼝中的所有⽅法都 没有⽅法体 ,通过关键
字 interface 实现。
抽象类是可以有私有⽅法或私有变量的,通过把类或者类中的⽅法声明为abstract来表示⼀
个类是抽象类,被声明为抽象的⽅法不能包含⽅法体。⼦类实现⽅法必须含有相同的或者更
低的访问级别(public->protected->private)。抽象类的⼦类为⽗类中所有抽象⽅法的具体
实现,否则也是抽象类。
相同点:
(1)都不能被实例化
(2)接⼝的实现类或抽象类的⼦类都只有实现了接⼝或抽象类中的⽅法后才能实例化。
不同点:
(1)接⼝只有定义,不能有⽅法的实现,但java 1.8中可以定义default⽅法体,⽽抽象类可
以有定义与实现,⽅法可在抽象类中实现。
(2)实现接⼝的关键字为implements,继承抽象类的关键字为extends。⼀个类可以实现
多个接⼝,但⼀个类只能继承⼀个抽象类。所以,使⽤接⼝可以间接地实现多重继承。
(3)接⼝强调特定功能的实现,⽽抽象类强调所属关系。
(4)接⼝⽅法默认修饰符是 public,抽象⽅法可以有 public、protected 和 default 这些
修饰符(抽象⽅法就是为了被重写所以不能使⽤ private`关键字修饰!)。
(5)接⼝被⽤于常⽤的功能,便于⽇后维护和添加删除,⽽抽象类更倾向于充当公共类的⻆
⾊,不适⽤于⽇后重新对⽴⾯的代码修改。从设计层⾯来说,抽象是对类的抽象,是⼀种模
板设计,⽽接⼝是对⾏为的抽象,是⼀种⾏为的规范。
4.Java中的内部类说⼀下
参考答案:内部类有四种,分别是静态内部类、局部内部类、匿名内部和成员内部类
静态内部类:常⻅的main函数就是静态内部类,调⽤静态内部类通过“外部类.静态内部类”
局部内部类:定义在⽅法中的类叫做局部内部类。
匿名内部类:是指继承⼀个⽗类或者实现⼀个接⼝的⽅式直接定义并使⽤的类,匿名内部类
没有class关键字,因为匿名内部类直接使⽤new⽣成⼀个对象
5.说⼀下final关键字的作⽤
参考答案:final关键字可以修饰类、⽅法和属性。
当final修饰类的时候,表明这个类不能被继承。final 类中的所有成员⽅法都会被隐式地指定
为 final ⽅法。
当final修饰⽅法的时候,表明这个⽅法不能被重写。
当final修饰属性的时候,如果是基本数据类型的变量,则其数值⼀旦在初始化之后便不能更
改;如果是引⽤类型的变量,则在对其初始化之后便不能再让其指向另⼀个对象。
追问:谈谈final、finally、finalize有什么区别?
参考答案:
final 可以⽤来修饰类、⽅法、变量,分别有不同的意义,修饰class 类时表明这个类不能被
继承;修饰的变量不可以修改;修饰⽅法的时候,表明这个⽅法不能被重写。
finally 则是 Java 保证重点代码⼀定要被执⾏的⼀种机制。可以使⽤ try-finally 或者 try-
catch-finally 来进⾏类似关闭 JDBC 连接、保证 unlock 锁等动作。
finalize 是基础类 java.lang.Object 的⼀个⽅法,它的设计⽬的是保证对象在被垃圾收集前
完成特定资源的回收。finalize 机制现在已经不推荐使⽤,并且在 JDK 9 开始被标记为
deprecated。
6.说⼀下String,StringBuilder和StringBuffer的区别
参考答案:
String 类是Java中⾮常基础且使⽤频繁的类,内部使⽤ final 关键字修饰,所以 String 对象
是不可变的。由于String的不可变性,所以在进⾏字符串拼接、裁剪字符串等操作时,会产⽣
新的 String 对象。
StringBuffer 为了解决字符串拼接产⽣太多中间对象的问题所产⽣。该类提供了append⽅
法,把字符串添加到已有序列的末尾或者指定位置。对⽅法加了同步锁或者对调⽤的⽅法加
了同步锁,所以是线程安全。
如果没有线程安全的需要,可以使⽤StringBuilder 。该类对⽅法进⾏没有加同步锁,所以是
⾮线程安全的。
总结:
1. 操作少量的数据: 适⽤ String
2. 单线程操作字符串缓冲区下操作⼤量数据: 适⽤ StringBuilder
3. 多线程操作字符串缓冲区下操作⼤量数据: 适⽤ StringBuffer
7.说⼀下Java中的==与eaquels的区别
参考答案:
== : 它的作⽤是判断两个对象的地址是不是相等。即,判断两个对象是不是同⼀个对象(基本
数据类型==⽐较的是值,引⽤数据类型==⽐较的是内存地址)。
eaquels:
情况 1:类没有重写 equals() ⽅法。则通过 equals() ⽐较该类的两个对象时,等价于
通过“==”⽐较这两个对象。
情况 2:类重写了 equals() ⽅法。⼀般,我们都重写 equals() ⽅法来⽐较两个对象的
内容是否相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。