复试面试问题

1.面向对象是基于面向过程的编程思想。

面向过程:强调的是每一个功能的步骤。面向对象:强调的是对象,然后由对象去调用功能。

2.成员变量和局部变量的区别?

A:在类中的位置不同: 成员变量在类中方法处,局部变量在方法定义中或者方法声明上。

B:在内存中的位置不同:成员变量在堆内存,局部变量在栈内存。

C:生命周期不同:成员变量随着对象的创建而存在,随着对象的消失而消失。局部变量随着方法的调用而存在,随着方法的调用完毕而消失。

D:初始化值不同:成员变量有默认初始化值,局部变量没有默认初始化值,必须定义,赋值,然后才能使用。

3.Java和C++的区别:

  1. Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。

  2. C++中有指针,Java中没有,但是有引用。

  3. Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承。

C++中支持强制自动转型,Java中不行,会出现ClassCastException(类型不匹配)。

Java 支持自动垃圾回收,而 C++ 需要手动回收。

Java 不支持操作符重载, C++ 可以。

Java 的 goto 是保留字,但是不可用,C++ 可以使用 goto。

Java 不支持条件编译,C++ 通过
#ifdef #ifndef 等预处理命令从而实现条件编译。

  1. “JVM是虚拟机 Java Virtual Machine的英文简称。它是java运行环境的一部分,是一个虚构出来的计算机,它是通过在实际的计算机上仿真模拟各种计算机功能来实现的。”

5.Abstract不能和private,final,static共存

6.抽象类和接口的区别:

A:成员区别:

抽象类:

成员变量:可以变量,也可以常量。

构造方法:有

成员方法:可以抽象,也可以非抽象。

接口:

成员变量:只可以常量        成员方法:只可以抽象

B:关系区别:

类与类:继承关系,只能单继承,可以多层继承。

类与接口:实现关系,可以单实现,也可以多实现。并且还可以在继承一个类的同时实现多个接口。

接口与接口:继承关系,可以单继承,也可以多继承。

C:设计理念区别:

抽象类:被继承体现的是:is a 的关系,抽象类中定义的是该继承体系的共性功能。

接口:实现的是:like a 的关系,接口中定义的是继承体系的扩展功能。

7.Package,import,class的顺序关系,package>import>class

Package只能有一个,import可以有多个,class可以有多个,建议就一个。

8.String,StringBuffer,StringBuilder的区别?String是内容不可变的,而StringBuffer,StringBuilder是内容可变的。  StringBuffer是同步的,数据安全,效率低,StringBuilder是不同步的,数据不安全的,效率高的。

9.OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;

10.无线传感器网络主要由三大部分组成,包括节点、传感网络和用户这3部分

11.Java语言是跨平台的。JDK是开发环境(大)JRE是运行环境(中)又JVM保证跨平台(小)。

13.命名规则:

包:文件夹,把相同的类名进行区分,全部小写。

类或者接口:一个单词:单词的首字母必须大写。多个单词:每个单词的首字母必须大写。

方法或者变量:一个单词:单词的首字母小写。多个:从第二个单词开始首字母大写。

常量:一个单词:全部大写。多个:每个字母都要大写用_隔开。

14.Char字符用单引号。String字符串用双引号。

15.&&和||前一个真(假)就不判断后面的了,&和|还判断。

16.Break用来从switch语句或循环语句中跳出。Continue跳过循环体的剩余语句,开始执行下一次循环。Return结束方法。

权限
  修饰符

同一个类

同一个包的子类或者无关类

不同包或同一包的子类

不同包无关系(全局)

Private

Default

Protected

public

19.修饰符包括:

权限修饰符:private,默认的,public,protected。

状态修饰符:static,final。

抽象:abstract。

类:

权限修饰符:private,默认的。

状态修饰符:final。

抽象:abstract。

多用:public

成员变量:

权限修饰符:private,默认的,public,protected。

状态修饰符:static,final。

抽象:无。

多用:private

构造方法:

权限修饰符:private,默认的,public,protected。

状态修饰符:无。

抽象:无。

多用:public

成员方法

权限修饰符:private,默认的,public,protected。

状态修饰符:static,final。

抽象:abstract。

多用:public

除此以外的构造组合

成员变量:public static final

成员方法:public static;public abstract;public
final;

20.算法与程序的区别:算法是为一个问题或一类问题给出的解决方法与具体步骤,是对问题求解过程的一种准确而完整的逻辑描述。程序则是为了用计算机解题或控制某一过程而编排的一系列指令的集合。程序不等于算法。但是,通过程序设计可以在计算机上实现算法。

  1. 方法重写:子类中出现了和父类中方法声明一模一样的方法。

方法重载: 本类中出现的方法名一样,参数列表不同的方法。与返回值无关。

方法重写的应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。即沿袭了父类的功能,又定义了子类特有的内容。

  1. 继承中构造方法的关系

A:子类中所有的构造方法默认都会访问父类中空参数的构造方法

B:因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。

23.this(…)或者super(…)必须出现在第一条语句上。

  1. A:一个类的静态代码块,构造代码块,构造方法的执行流程

静态代码块 > 构造代码块 > 构造方法

B:静态的内容是随着类的加载而加载,静态代码块的内容会优先执行

C:子类初始化之前先会进行父类的初始化

  1. this代表本类对应的引用。 super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)

代码块:在Java中使用{}括起来的代码。根据其位置和声明的不同,可以分为,局部代码块:局部位置,用于限定变量的生命周期。

构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。

静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了。作用:一般是对类进行初始化。

静态代码块:只执行一次.构造代码块:每次调用构造方法都执行

  1. 抽象类的特点:

A:抽象类和抽象方法必须用abstract关键字修饰

B:抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类

C:抽象类不能实例化

D:抽象的子类

a:如果不想重写抽象方法,该子类是一个抽象类。

b:重写所有的抽象方法,这个时候子类是一个具体的类。

抽象类的实例化其实是靠具体的子类实现的。是多态的方式。

Animal a = new Cat();

  1. 多态中的成员访问特点:

A:成员变量  编译看左边,运行看左边。

B:构造方法 创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。

C:成员方法 编译看左边,运行看右边。

D:静态方法 编译看左边,运行看左边。

final 特点:可以修饰类,该类不能被继承。可以修饰方法,该方法不能被重写。可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。

  1. final修饰局部变量的问题

基本类型:基本类型的值不能发生改变。

引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。

  1. 内部的访问特点:

A:内部类可以直接访问外部类的成员,包括私有。

B:外部类要访问内部类的成员,必须创建对象。

  • A:main方法 * main+alt+/ 回车即可

* B:输出语句 * syso+alt+/

* 1:格式化 
ctrl+shift+f

* 2:导入包 
ctrl+shift+o

单行:注释 ctrl+/,取消注释再来一次。 多行:ctrl+shift+/,ctrl+shift+\

* 4:代码上下移动

  • 选中代码alt+上/下箭头

* 5:查看源码 *   选中类名(F3或者Ctrl+鼠标点击)

  1. Integer类下的一个静态方法:

*     public
static String toHexString(int i):把一个整数转成一个十六进制表示的字符串

34.字符串是常量,一旦被赋值,就不能被改变。

  1. ==:比较引用类型比较的是地址值是否相同

equals:比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。

  1. String类的判断功能:

boolean
equals(Object obj):比较字符串的内容是否相同,区分大小写

boolean
equalsIgnoreCase(String str):比较字符串内容是否相同忽略大小写

boolean
contains(String str):判断大字符串中是否包含小字符串

boolean
startsWith(String str):判断字符串是否以某个指定的字符串开头

boolean
endsWith(String str):判断字符串是否以某个指定的字符串结尾

boolean
isEmpty():判断字符串是否为空。

注意:字符串内容为空和字符串对象为空。String s = “”;String s = null;

  1. String类的获取功能

int length():获取字符串的长度。

char charAt(int index):获取指定索引位置的字符

int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。

int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。

int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。

int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。

String substring(int start):从指定位置开始截取字符串,默认到末尾。

String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。

  1. String的转换功能:

byte[] getBytes():把字符串转换为字节数组。

char[] toCharArray():把字符串转换为字符数组。

static String valueOf(char[] chs):把字符数组转成字符串。

static String valueOf(int i):把int类型的数据转成字符串。

注意:String类的valueOf方法可以把任意类型的数据转成字符串。

String toLowerCase():把字符串转成小写。

String toUpperCase():把字符串转成大写。

String concat(String str):把字符串拼接。

String类替换功能:String replace(char old,char new)

String replace(String old,String new)

去除字符串两空格  String trim()

按字典顺序比较两个字符串

int compareTo(String str)  int compareToIgnoreCase(String str)

  1. Arrays:针对数组进行操作的工具类。比如说排序和查找。

1:public static String toString(int[] a) 把数组转成字符串

2:public static void sort(int[] a) 对数组进行排序

3:public static int binarySearch(int[] a,int
key) 二分查找

  1. public
    static boolean isUpperCase(char ch):判断给定字符是否大写

public
static boolean isLowerCase(char ch):判断给定字符是否是小写字符

public
static boolean isDigit(char ch):判断给定的字符是否是数字字符

public
static char toUpperCase(char ch):把给定的字符转换为大写字符

public
static char toLowerCase(char ch):把给定的字符转换为小写字符

42.  为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型。包装类类型。(用于基本数据类型与字符串之间的转换。)

Byte>Byte 
Short>Short  int>Integer  long>Long 
float>Float

double>Double  char>Character  boolean>Boolean

  1. int类型和String类型的相互转换
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值