复试面试问题

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类型的相互转换

int – String

String.valueOf(number)

String – int

Integer.parseInt(s)

常用的基本进制转换

public static String toBinaryString(int i)

public static String toOctalString(int i)

public static String toHexString(int i)

十进制到其他进制

public static String toString(int i,int
radix)

其他进制到十进制

public
static int parseInt(String s,int radix)

Integer的数据直接赋值,,针对-128到127之间的数据,做了一个数据缓冲池,如果数据是该范围内的,每次并不创建新的空间(Integer i7 = 127;)

StringBuffer和String的区别?

前者长度和内容可变,后者不可变。使用前者做字符串拼接,不会浪费太多资源。

StringBuffer的构造方法:

public StringBuffer():无参构造方法

public StringBuffer(int capacity):指定容量的字符串缓冲区对象

public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

StringBuffer的方法:

public
int capacity():返回当前容量。  理论值

public
int length():返回长度(字符数)。 实际值

  1. StringBuffer的添加功能:

public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

public StringBuffer insert(int offset,String
str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

StringBuffer的删除功能

public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身

public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身

StringBuffer的反转功能: public
StringBuffer reverse()

StringBuffer的替换功能:

public StringBuffer replace(int start,int
end,String str):从start开始到end用str替换

StringBuffer的截取功能:注意返回值类型不再是StringBuffer本身了

public String substring(int start)

public String substring(int start,int end)

  1. BigDecimal类:不可变的任意精度的有符号十进制数,解决数据丢失问题。

功能:

public
BigDecimal add(BigDecimal augend)

public
BigDecimal subtract(BigDecimal subtrahend)

public
BigDecimal multiply(BigDecimal multiplicand)

public
BigDecimal divide(BigDecimal divisor)

public
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode): 商,几位小数,如何舍取

  1. BigInteger:可以让超过Integer范围内的数据进行运算

功能:

public
BigInteger add(BigInteger val):加

public
BigInteger subtract(BigInteger val):减

public
BigInteger multiply(BigInteger val):乘

public
BigInteger divide(BigInteger val):除

public
BigInteger[] divideAndRemainder(BigInteger val):商和余数的数组

  1. Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR
    等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

public
int get(int field):返回给定日历字段的值。日历类中的每个日历字段都是静态的成员变量,并且是int类型。

  1. public
    void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作。

public
final void set(int year,int month,int date):设置当前年月日

  1. Date:表示特定的瞬间,精确到毫秒。

构造方法:

Date():根据当前的默认毫秒值创建日期对象

Date(long
date):根据给定的毫秒值创建日期对象

格式:Sat Mar 14 08:56:41
CST 2020

public long getTime():获取时间,以毫秒为单位(currentTimeMillis())

public
void setTime(long time):设置时间

  1. Date   –
    String(格式化)   public final String
    format(Date date)

String – Date(解析)       public
Date parse(String source)

DateForamt:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat。

SimpleDateFormat的构造方法:

SimpleDateFormat():默认模式

SimpleDateFormat(String pattern):给定的模式

年 y  月
M   日 d  时
H  分 m  秒 s    2014年12月12日 12:12:12

  1. Math:用于数学运算的类。

成员变量:

public
static final double PI      public static
final double E

成员方法:

public
static int abs(int a):绝对值

public static double ceil(double a):向上取整

public static double floor(double a):向下取整

public static int max(int a,int b):最大值 (min自学)

public static double pow(double a,double
b):a的b次幂

public static double random():随机数 [0.0,1.0)

public static int round(float a) 四舍五入(参数为double的自学)

public static double sqrt(double a):正平方根

  1. Random:产生随机数的类

构造方法:

public
Random():默认种子,是当前时间的毫秒值

public Random(long seed):给出指定的种子,每次得到的随机数是相同的。

成员方法:

public
int nextInt():返回的是int范围内的随机数

public
int nextInt(int n):返回的是[0,n)范围的内随机数

  1. 正则表达式:符合一定规则的字符串。结合下面的功能使用

判断功能 String类的public boolean matches(String regex)

59.正则表达式格式:

模式

描述

^

匹配字符串的开头

$

匹配字符串的末尾。

.

匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

[…]

用来表示一组字符,单独列出:[amk] 匹配 ‘a’,‘m’或’k’

[^…]

不在[]中的字符:[^abc]
匹配除了a,b,c之外的字符。

re*

匹配0个或多个的表达式。

re+

匹配1个或多个的表达式。

re?

匹配0个或1个由前面的正则表达式定义的片段非贪婪方式

re{ n}

匹配n个前面表达式。例如,"o{2}“不能匹配"Bob"中的"o”,但是能匹配"food"中的两个o。

re{ n,}

精确匹配n个前面表达式。例如,"o{2,}“不能匹配"Bob"中的"o”,但能匹配"foooood"中的所有o。"o{1,}“等价于"o+”。"o{0,}“则等价于"o*”。

re{n, m}

匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

a| b

匹配a或b

(re)

匹配括号内的表达式,也表示一个组

\w

匹配数字字母下划线

\W

匹配非数字字母下划线

\s

匹配任意空白字符,等价于 [\t\n\r\f]。

\S

匹配任意非空字符

\d

匹配任意数字,等价于 [0-9]。

\D

匹配任意非数字

\A

匹配字符串开始

\Z

匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。

\z

匹配字符串结束

\G

匹配最后匹配完成的位置。

\b

匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配"never" 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。

\B

匹配非单词边界。‘er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。

\n,\t

匹配一个换行符。匹配一个制表符, 等

分割功能: String类的public String[]
split(String regex)

根据给定正则表达式的匹配拆分此字符串。

  1. 硬盘上的路径,我们应该用\替代\

  2. 替换功能: String类的public String replaceAll(String regex,String replacement)      使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

  3. 把规则编译成模式对象       Pattern
    p = Pattern.compile(regex);

通过模式对象得到匹配器对象      Matcher m = p.matcher(s);

调用匹配器对象的功能     // 通过find方法就是查找有没有满足条件的子串

注意:一定要先find(),然后才能group()

System类包含一些有用的类字段和方法。它不能被实例化。

方法:

public
static void gc():运行垃圾回收器。

public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。

public static long currentTimeMillis():返回以毫秒为单位的当前时间

public static void arraycopy(Object src,int
srcPos,Object dest,int destPos,int length)           从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

65.Collection类

boolean addAll(Collection c):添加一个集合的元素

boolean removeAll(Collection c):移除一个集合的元素(只要有一个元素被移除了,就返回true。)

boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(只有包含所有的元素,才叫包含)

boolean retainAll(Collection c): A对B做交集,最终的结果保存在A中,B不变。返回值表示的是A是否发生过改变。

  1. 集合的遍历。其实就是依次获取集合中的每一个元素。

Object[] toArray():把集合转成数组,可以实现集合的遍历

java中length,length(),size()区别

java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.

java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.

java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!

  1. 数组和集合的区别?

A:长度区别

数组的长度固定           集合长度可变

B:内容不同

数组存储的是同一种类型的元素 而集合可以存储不同类型的元素

C:元素的数据类型问题

数组可以存储基本数据类型,也可以存储引用数据类型

集合只能存储引用类型

  1. Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。

Collection的功能概述:

1:添加功能

boolean
add(Object obj):添加一个元素

boolean
addAll(Collection c):添加一个集合的元素

2:删除功能

void
clear():移除所有元素

boolean
remove(Object o):移除一个元素(只有一個移除就true)

boolean
removeAll(Collection c):移除一个集合的元素(所有)

3:判断功能

boolean
contains(Object o):判断集合中是否包含指定的元素

boolean
containsAll(Collection c):判断集合中是否包含指定的集合元素(所有)

boolean
isEmpty():判断集合是否为空

4:获取功能

Iterator
iterator()(重点)

5:长度功能

int
size():元素的个数

6:交集功能

boolean
retainAll(Collection c):A对B做交集,最终的结果存在A中,B不变,返回值表示的是A是否发生过变化。

7:把集合转换为数组        Object[]
toArray()

// 创建集合对象

// Collection c = new
Collection(); //错误,因为接口不能实例化

Collection c = new ArrayList();

Iterator iterator():迭代器,集合的专用遍历方式

Object
next():获取元素,并移动到下一个位置。

NoSuchElementException:没有这样的元素,因为你已经找到最后了。

boolean
hasNext():如果仍有元素可以迭代,则返回 true。

List集合的特点: 有序(存储和取出的元素一致),可重复的。

List集合的特有功能:

A:添加功能

void
add(int index,Object element):在指定位置添加元素

B:获取功能

Object
get(int index):获取指定位置的元素

C:列表迭代器

ListIterator
listIterator():List集合特有的迭代器

D:删除功能

Object
remove(int index):根据索引删除元素,返回被删除的元素

E:修改功能

Object
set(int index,Object element):根据索引修改元素,返回被修饰的元素

F:查找功能:

Int indexOf(Object o);

Int lastIndexOf(Object o);

G:子list的截取:

List subList(int from,int to);

72.  List集合的特有遍历功能:size()和get()方法结合使用

ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

产生的原因:

迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。

其实这个问题描述的是:迭代器遍历元素的时候,通过集合是不能修改元素的。

如何解决呢?

A:迭代器迭代元素,迭代器修改元素

元素是跟在刚才迭代的元素后面的。

B:集合遍历元素,集合修改元素(普通for)

元素在最后添加的。

列表迭代器:

ListIterator
listIterator():List集合特有的迭代器,该迭代器继承了Iterator迭代器,可以直接使用hasNext()和next()方法。

  1. 泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。

格式:

<数据类型>

此处的数据类型只能是引用类型。

好处:

A:把运行时期的问题提前到了编译期间

B:避免了强制类型转换

C:优化了程序设计,解决了黄色警告线

  1. 泛型高级(通配符)

?:任意类型,如果没有明确,那么就是Object以及任意的Java类了

? extends E:向下限定,E及其子类

? super E:向上限定,E极其父类

JDK5的新特性:自动拆装箱,泛型,增强for,静态导入,可变参数,枚举

增强for:是for循环的一种。

格式:

for(元素数据类型 变量 : 数组或者Collection集合) {

使用变量即可,该变量就是元素

}

好处:简化了数组和集合的遍历。

弊端: 增强for的目标不能为null。

如何解决呢?对增强for的目标先进行不为null的判断,然后在使用。

  1. 可变参数:定义方法的时候不知道该定义多少个参数

格式:

修饰符 返回值类型 方法名(数据类型…  变量名){

}

注意:

这里的变量其实是一个数组

如果一个方法有可变参数,并且有多个参数,可变参数是最后一个

List的子类特点:

ArrayList:

底层数据结构是数组,查询快,增删慢

线程不安全,效率高

Vector:

底层数据结构是数组,查询快,增删慢

线程安全,效率低

LinkedList:

底层数据结构是链表,查询慢,增删快

线程不安全,效率高

  1. Vector的特有功能:

1:添加功能

public
void addElement(Object obj)     –  add()

2:获取功能

public
Object elementAt(int index)     –  get()

public
Enumeration elements()          –  Iterator
iterator()

boolean
hasMoreElements()              hasNext()

Object
nextElement()               next()

  1. LinkedList的特有功能:

A:添加功能

public
void addFirst(Object e)

public
void addLast(Object e)

B:获取功能

public
Object getFirst()

public
Obejct getLast()

C:删除功能

public
Object removeFirst()

public
Object removeLast()

  1. -List  有序(存储顺序和取出顺序一致),可重复

-Set   无序(存储顺序和取出顺序不一致),唯一

HashSet:它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。

HashSet集合存储自定义对象并遍历。对象的成员变量值相同为同一个对象

注意:

你使用的是HashSet集合,这个集合的底层是哈希表结构。

而哈希表结构底层依赖:hashCode()和equals()方法。

如果认为对象的成员变量值相同为同一个对象的话,就应该重写这两个方法。

  1. LinkedHashSet:底层数据结构由哈希表和链表组成。 哈希表保证元素的唯一性。 链表保证元素有素。(存储和取出是一致)

TreeSet存储自定义对象并保证排序和唯一。

  1. Collection和Collections的区别?

Collection:是单列集合的顶层接口,有子接口List和Set。

Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法

Collections的方法

public static void
sort(List list):排序
默认情况下是自然顺序。

public static int
binarySearch(List list,T key):二分查找

public static T
max(Collection coll):最大值

public static void reverse(List
list):反转

public static void shuffle(List
list):随机置换

88.  Map集合的遍历。A:获取所有键值对对象的集合B:遍历键值对对象的集合,得到每一个键值对对象     C:根据键值对对象获取键和值

Set> entrySet():返回的是键值对对象的集合

Map集合的特点:将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

Map集合和Collection集合的区别?

Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。

Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。

注意:

Map集合的数据结构值针对键有效,跟值无关

Collection集合的数据结构是针对元素有效

90.  Map集合的功能概述:

1:添加功能

V
put(K key,V value):添加元素。

如果键是第一次存储,就直接存储元素,返回null

如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

2:删除功能

void
clear():移除所有的键值对元素

V
remove(Object key):根据键删除键值对元素,并把值返回

3:判断功能

boolean
containsKey(Object key):判断集合是否包含指定的键

boolean
containsValue(Object value):判断集合是否包含指定的值

boolean
isEmpty():判断集合是否为空

4:获取功能

Set>
entrySet():???

V
get(Object key):根据键获取值

Set
keySet():获取集合中所有键的集合

Collection
values():获取集合中所有值的集合

5:长度功能

int size():返回集合中的键值对的对数

Hashtable和HashMap的区别?

Hashtable:线程安全,效率低。不允许null键和null值

HashMap:线程不安全,效率高。允许null键和null值

List,Set,Map等接口是否都继承子Map接口?

List,Set不是继承自Map接口,它们继承自Collection接口

Map接口本身就是一个顶层接口

92.异常:

ArithmeticExcetion:整数的除0操作将导致该异常的发生。

NullPointerException:当对象没有实例化时,就试图通过该对象的变量访问其数据或者方法。

ArrayIndexOutOfBoundsException:数组越界异常。

IOExcetion:输入/输出时可能产生的各种异常。

SecurityException:一般由浏览器抛出。

93.处理异常的两种方法:

A:try…catch…finally     B:throws 抛出

try…catch…finally的处理格式:

try
{

可能出现问题的代码;

}catch(异常名 变量) {

针对问题的处理;

}finally
{

释放资源;

}

变形格式:

try
{

可能出现问题的代码;

}catch(异常名 变量) {

针对问题的处理;

}

注意: A:try里面的代码越少越好

B:catch里面必须有内容,哪怕是给出一个简单的提示

C:平级关系的异常谁前谁后无所谓,如果出现了子父关系,父必须在后面。

抛出。

格式:

throws
异常类名(注意:这个格式必须跟在方法的括号后面。)

注意:       尽量不要在main方法上抛出异常。

  1. throws和throw的区别(面试题)

throws

用在方法声明后面,跟的是异常类名

可以跟多个异常类名,用逗号隔开

表示抛出异常,由该方法的调用者来处理

throws表示出现异常的一种可能性,并不一定会发生这些异常

throw

用在方法体内,跟的是异常对象名

只能抛出一个异常对象名

表示抛出异常,由方法体内的语句处理

throw则是抛出了异常,执行throw则一定抛出了某种异常

  1. 面试题:

1:final,finally和finalize的区别

final:最终的意思,可以修饰类,成员变量,成员方法

修饰类,类不能被继承 修饰变量,变量是常量  修饰方法,方法不能被重写

finally:是异常处理的一部分,用于释放资源。

一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了

finalize:是Object类的一个方法,用于垃圾回收

2:如果catch里面有return语句,请问finally里面的代码还会执行吗?

会,在return前执行

3:try…catch…finally的格式变形

A:try…catch…finally

B:try…catch

C:try…catch…catch…

D:try…catch…catch…finally

E:try…finally          这种做法的目前是为了释放资源。

  1. 异常注意事项:

A:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。

B:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常

C:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws

97.原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这时用throw

区别:后续程序需要继续运行就try。后续程序不需要继续运行就throw。

98.进制之间的相互转换:

十进制转二进制

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

二进制转十进制

方法为:把二进制数按权展开、相加即得十进制数。

二进制转八进制

方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

八进制转成二进制

方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

二进制转十六进制

方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

十六进制转二进制

方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

十进制转八进制或者十六进制有两种方法

第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。

第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。

八进制或者十六进制转成十进制

方法为:把八进制、十六进制数按权展开、相加即得十进制数。

八进制与十六进制之间的转换有两种方法

第一种:他们之间的转换可以先转成二进制然后再相互转换。

第二种:他们之间的转换可以先转成十进制然后再相互转换。

  1. 数组和链表的特性差异,本质是:连续空间存储和非连续空间存储的差异,主要有下面两点:

ArrayList:底层是Object数组实现的:由于数组的地址是连续的,数组支持O(1)随机访问;数组在初始化时需要指定容量;数组不支持动态扩容,像ArrayList、Vector和Stack使用的时候看似不用考虑容量问题(因为可以一直往里面存放数据);但是它们的底层实际做了扩容;数组扩容代价比较大,需要开辟一个新数组将数据拷贝进去,数组扩容效率低;适合读数据较多的场合

LinkedList:底层使用一个Node数据结构,有前后两个指针,双向链表实现的。相对数组,链表插入效率较高,只需要更改前后两个指针即可;另外链表不存在扩容问题,因为链表不要求存储空间连续,每次插入数据都只是改变last指针;另外,链表所需要的内存比数组要多,因为他要维护前后两个指针;它适合删除,插入较多的场景。另外,LinkedList还实现了Deque接口。

Least Recently Used(LRU)就是当你内存中数据到达指定容量的时候,LRU选择将最长时间没有被使用过的那个键值对从内存中移除。

  1. a = a + b 与 a += b 的区别:+= 隐式的将加操作的结果类型强制转换为持有结果的类型

102.colse()和flush()的区别。

A:close()关闭流对象,但是先刷新一次缓冲区,关闭之后流对象不可以继续在使用了。

B:flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。

  1. OSI ( Open System Interconnect ):开放系统互联,是一个七层的计算机网络模型,分别为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

104.TCP/IP(Transmission
Control Protool/Internet Protool):传输控制协议/因特网互联协议,是一个四层的计算机网络模型,分别为:数据链路层(网络接口层),网络层,传输层和应用层。结合 OSI 和 TCP/IP 产生了一个五层结构,分别为:物理层、数据链路层、网络层、传输层和应用层。 Internet 就是采用的 TCP/IP 协议。

  1. 集线器工作在 OSI 模型的物理层,网卡工作在 OSI 模型的物理层,交换机工作在数据链路层,路由器工作在网络层。

集线器的英文称为“Hub”。“Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。

IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。

A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是O,B类地址的前两位总是10,C类地址的前三位总是110。

子网掩码的作用就是将某个IP地址划分成网络地址和主机地址两部分。

则它的网络号和主机号可按如下方法得到:


IP地址转换为二进制

② 子网掩码转换为二进制

③ 将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分

④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分

109.TCP与UDP的区别:

TCP提供面向连接的、可靠的数据流传输,而UDP提供的使非面向链接的、不可靠的数据流传输。TCP传输单位称为TCP报文段,UDP传输单位成为用户数据段。TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

110.网关的作用: 将两个使用不同协议的网络段连接在一起的设备。它的作用就是对两
个网络段中的使用不同传输协议的数据进行互相的翻译转换

ipconfig命令是DOS系统中的命令,可以帮助用户查看网络状况,可以看到你想看到的众多网络信息,比如延迟,IP,主机信息,物理地址信息等等。

  1. 15 、 ICMP 协议?

答: ICMP 是 Internet Control Message Protocol ,因特网控制报文协议。它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP 报文有两种:差错报告报文和询问报文。

  1. TFTP 协议?

答: Trivial File Transfer Protocol 简单文件传输协议,是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

114.HTTP协议?

答:HTTP超文本传输协议,是用于从万维网(WWW:World
Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)是一个属于应用层的面向对象的协议,由于其简捷,快速的方式,适用于分布式超媒体信息系统。

115.DHCP协议?

答:动态主机配置协议,是一种让系统得以链接到网络上,并获取所需要的配置参数手段。

116.IP协议?

答:IP协议是网络层的协议,它是为了实现相互连接的计算机进行通信设计的协议,它实现了自动路由功能,即自动寻径功能。

117.Internet上保留哪些IP地址用于内部?

答:10.0.0.0    172.16.到172.31.     192.168.0.到192.168.255

  1. 运行 net
    share 返回的结果是什么?

答:列出共享资源相关信息。

  1. net use 和 net
    user 分别指什么?

答: net
user 是对用户进行管理,如添加删除网络使用用户等。

net use 是对网络设备进行管理。

  1. ipconfig/all 用于查看申请的本机 IP 地址

ipconfig/release 用于释放 IP

ipconfig/renew 用于重新向 DHCP 服务器申请 IP 。

  1. ADSL 使用的是频分多路复用技术。

  2. 网桥的作用:网桥是一个局域网与另一个局域网之间建立连接的桥梁。

  3. 防火墙的端口防护是指?

答:指通过对防火墙的端口开关的设置,关闭一些非必需端口,达到一定安全防护目的的行为。

  1. 面向连接和非面向连接的服务的特点是什么?

答:面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。

  1. 以太网帧的格式

目的地址

源地址

类型

数据

FCS

  1. TCP 的三次握手过程:客户端向服务器端发送连接请求;服务器端对收到的客户端的报文段进行确认;客户端再次对服务器端的确认进行确认。

  2. 网络按地域范围分类?

答:局域网、城域网、广域网。

  1. 网络按使用者分类为:公共网和专用网。

  2. 网络的拓扑结构主要有:星形、总线型、环形以及树型、全连接、不规则网状。

  3. 计算机网络体系结构?

答:实际是分层加每层对应的协议集合。协议包括三个组成部分:

语法:数据与控制信息结构或格式;

语义:需要发出何种控制信息,完成何种动作以及做出何种响应;

时序(同步):事件实现顺序的详细说明。

  1. 双绞线的线对?

答: 1-2 、 7-8 、 3-6 、 4-5

  1. 数据链路层协议可能提供的服务?

答:成帧、链路访问、透明传输、可靠交付、流量控制、差错检测、差错纠正、半双工和全双工。最重要的是帧定界(成帧)、透明传输以及差错检测。

  1. 帧定界?

答:帧定界就是确定帧的界限,其方法有:字节计数法、字符填充法、零比特填充法。

  1. 透明传输?

答:即应能传输任何的数据,在帧定界中用到的标记帧起点和结束的字符也应该能正确的被传输。

  1. 差错检测?

答:循环冗余检验 CRC ,计算出的结果叫做帧检验序列 FCS 。循环冗余检验序列 CRC 差错检测技术只能做到无差错接受,即凡是接收端数据链路层接受的帧,我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错,但是要做到可靠传输(即发送什么就收到什么),也就是说,传输到接收端的帧无差错、无丢失、无重复,同时还按发送的顺序接收,这时就必须再加上确认和重传机制。

  1. 数据链路层互联设备

答:( 1 )网桥:互连两个采用不同数据链路层协议,不同传输介质与不同传输速率的网络,网桥互连的网络在数据链路层以上采用相同的协议。

( 2 )交换机在数据链路层上实现互连的存储转发设备。交换机按每个包中的 MAC 地址相对简单地决策信息转发,交换机对应硬件设备,网桥对应软件。

  1. 局域网的关键技术?

答:拓扑结构(星形,总线型,环形,树型),介质访问方式( CSMA/CD , Token-passing ),信号传输形式(基带、宽带)。

  1. 网络接口卡(网卡)的功能?

答:( 1 )进行串行 / 并行转换。

( 2 )对数据进行缓存。

( 3 )在计算机的操作系统安装设备驱动程序。

( 4 )实现以太网协议。

  1. CSMA/CD ?答:是指载波监听多点接入 / 碰撞检测

  2. 以太网 MAC 帧格式?

目的地址( 6 字节)

源地址( 6 字节)

类型( 2 字节)

数据( 46 ——1500 字节)

FCS ( 4 字节)

  1. 无线局域网的 MAC 层?

答:( 1 )隐藏站问题,暴露站问题

( 2 ) CSMA/CA :是改进的 CSMA/CD ,增加的功能是碰撞避免,实际就是在发送数据之前对信道进行预约。

  1. 私有(保留)地址?

答:A 类: 10.0.0 .0 —— 10.255.255.255

B 类: 172.16.0.0 —— 172.31.255.255

C 类: 192.168.0.0 —— 192.168.255.255

  1. VLAN 是虚拟局域网的英文缩写,它是一个纯二层的技术,它的特点有三:广播风暴防范,安全,灵活性和可扩张性。

  2. SNMP 简单网络管理协议。

  3. TTL 是指生存时间

  4. 每个路由器在寻找路由时需要知道哪 5 部分信息?

答:目的地址:报文发送的目的地址

邻站的确定:指明谁直接连接到路由器的接口上

路由的发现:发现邻站知道哪些网络

选择路由:通过从邻站学习到的信息,提供最优的到达目的地的路径

保持路由信息:路由器保存一张路由表,它存储所知道的所有路由信息。

  1. 自适应网卡只有红灯闪烁,绿灯不亮,这种情况正常吗?

答:正常。自适应网卡红灯代表连通 / 工作,即连通时红灯长亮,传输数据时闪烁,绿灯代表全双工,即全双工状态是亮,半双工状态灭。如果一个半双工的网络设备(如 HUB )和自适应网络相连,由于这张网卡是自适应网卡,它就会工作在半双工状态,所以绿灯不亮也属于正常情况。

补充:网卡红绿灯是网卡工作的指示灯,红灯亮表示正在发送或接收数据,绿灯亮则表示网络连接正常。因此正常情况下应该是绿灯长亮,因为绿灯长亮才代表网络是通的。而有数据传输时,红灯就会闪烁。

  1. 两台笔记本电脑连起来后 ping (因特网包探索器)不同,你觉得可能存在哪些问题?

答:( 1 )首先考虑是否是网络的问题

( 2 )局域网设置问题,电脑互联是要设置的。看是否安装了必要的网络协议,最重要的是 IP 地址是否设置正确。

( 3 )网卡驱动未安装正确

( 4 )防火墙设置有问题

( 5 )是否有什么软件阻止了 ping 包

  1. 与 IP 协议配套的其他协议?

答: ARP :地址解析协议      RARP :逆地址解析协议

ICMP :因特网控制报文协议      IGMP :因特网组管理协议

  1. IP 地址分类?

答: IPv4 地址共有 32bit

网络号

网络范围

主机号

A 类

8bit   第一位固定为 0

0 —— 127

24bit

B 类

16bit  前两位固定为 10

128.0 —— 191.255

16bit

C 类

24bit  前三位固定为 110

192.0.0 —— 223.255.255

8bit

D 类

前四位固定为 1110 ,后面为多播地址   所以 D 类地址为多播地址

E 类

前五位固定为 11110 ,后面保留为今后所用

一般全 0 或全 1 的地址不使用,有特殊意思,主机地址为全 1 时为广播地址,全 0 时表示网络地址。同时127.0.0.1 表示回路, ping 该 IP 地址可以测试本机的 TCP/IP 协议安装是否成功。

IPv6 ?采用 128bit ,首部固定部分为 40 字节。

  1. 运输层协议与网络层协议的区别?

答:网络层协议负责的是提供主机间的逻辑通信

运输层协议负责的是提供进程间的逻辑通信

  1. 运输层的协议?

答: TCP ,传输单位称为: TCP 报文段

UDP ,传输单位称为:用户数据报

其端口的作用是识别那个应用程序在使用该协议。

  1. 接入网用的是什么接口?

答:一般采用 E1 , V.24 , V.35 ,等接口。

  1. OSI七层协议在网络传输中扮演的角色及功能:

7、应用层——–电脑的各种数据

6、表示层 ——– 处理用户信息的表示问题,如编码、数据格式转换和加密解密

5、会话层——–会话管理、会话流量控制、寻址、寻址

4、传输层——–各种协议(TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。 )

3、网络层——–路由器(通过路由选择算法,为报文或分组通过通信子网选择最适当的路径)

2、数据链路层—-交换机/网桥(负责建立和管理节点间的链路,通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路)

1、物理层——–集线器/中继器(利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。)

  1. 1、Integer是int的包装类,int则是java的一种基本数据类型

2、Integer变量必须实例化后才能使用,而int变量不需要

3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 。

4、Integer的默认值是null,int的默认值是0

157.HashMap和Hashtable的区别:

HashMap是非同步的,线程不安全的,而Hashtable是同步的线程安全的。HashMap可以接受为null的键值和值,而Hashtable不可以

1、网络协议主要要素为:语法、语义、同步。

2、一座大楼内的一个计算机网络系统,属于:LAN。

4、通信系统必须具备的三个基本要素是:信源、通信媒体、信宿

5、计算机网络通信系统是:数据通信系统

6、常用的传输介质中,带宽最宽、信号传输衰减最小、抗干扰能力最强的一类传输介质是:光纤

7、在OSI七层结构模型中,处于数据链路层与运输层之间的是:网络层

8、数据解封装的过程是: 流—帧—包—段—数据

9、完成路径选择功能是在OSI模型的网络层

10、在OSI中,完成整个网络系统内连接工作,为上一层提供整个网络范围内两个终端用户之间数据传输通路工作的是:网络层

11、在OSI中,为实现有效、可靠数据传输,必须对传输操作进行严格的控制和管理,完成这项工作的层次是:数据链路层

13、若网络形状是由站点和连接站点的链路组成的一个闭合环,则称这种拓扑结构为环形拓扑

14、在计算机网络中,所有的计算机均连接到一条通信传输线路上,在线路两端连有防止信号反射的装置。
这种连接结构被称为总线结构

16、市话网在数据传输期间,在源节点与目的节点之间有一条利用中间节点构成的物理连接线路。这种市话网采用电路交换技术。

17、世界上很多国家都相继组建了自己国家的公用数据网,现有的公用数据网大多采用分组交换方式

18、在计算机网络中,一般局域网的数据传输速率要比广域网的数据传输速率高

19、电路交换是实现数据交换的一种技术,其特点是信息延时短,且固定不变

22、在OSI中,物理层存在四个特性。其中,通信接口所用接线器的形状和尺寸属于机械特性

23、对于CSMA/CD而言,为了确保发送站点在传输时能检测到可能存在的冲突,数据帧的传输时延至少要等于信号传播时延的2倍

24、在同一个信道上的同一时刻,能够进行双向数据传送的通信方式是全双工

25、采用全双工通信方式,数据传输的方向性结构为可以在两个方向上同时传输

26、令牌总线的媒体访问控制方法是由( IEEE 802.4 )定义的。

27、在中继系统中,中继器处于物理层

28、只能简单再生信号的设备是中继器

29、互联网主要由一系列的组件和技术构成,其网络协议核心是TCP/IP

30、在数字通信中广泛采用CRC循环冗余码的原因是CRC可以检测出多位突发性差错

33、同轴电缆与双绞线相比,同轴电缆的抗干扰能力强

38、在OSI的七层参考模型中,工作在第三层以上的网间连接设备是网关

39、从通信协议的角度来看,路由器是在哪个层次上实现网络互联网络层

40、Internet的网络层含有四个重要的协议,分别为IP,ICMP,ARP,RARP

41、IP协议是无连接的,其信息传输方式是数据报

42、TCP/IP体系结构中的TCP和IP所提供的服务分别为运输层服务和网络层服务

43、IP地址是一个32位的二进制,它通常采用点分十进制数表示

44、在IP地址方案中,159.226.181.1是一个B类地址

45、把网络202.112.78.0划分为多个子网(子网掩码是255.255.255.192),则每个子网中可用的主机地址数是62

46、TCP/IP网络中常用的距离矢量路由协议是  RIP

47、在TCP/IP协议簇中,TCP、UDP协议工作在传输层

48、在OSI网络结构中,HTTP\DHCP协议工作在应用层

49、下面协议中,用于WWW传输控制的是HTTP

50、域名服务器上存放有Internet主机的域名和IP地址

51、在Internet域名体系中,域的下面可以划分子域,各级域名用圆点分开,按照从右到左越来越小的方式分多层排列

52、在Internet上浏览时,浏览器和WWW服务器之间传输网页使用的协议是HTTP

53、在Internet/Intranet中,不需要为用户设置帐号和口令的服务是DNS

54、用于电子邮件Email传输控制的是SMTP,用于收发邮件,简单邮件传输协议。

55、世界最早投入运行的计算机网络是ARPANET

56、计算机网络的体系结构是一种分层结构

57、OSI参考模型采用了7层的体系结构

58、串行数据通信的方向性结构有三种,单工、半双工  、全双工

59、因特网提供服务所采用的模式是客户/服务器

60、按照实际的数据传送技术,交换网络又可分为电路交换网、报文交换网、分组交换网

61、两种最常使用的多路复用技术是:频分多路复用,  时分多路复用

62、当数据报在物理网络中进行传输时,IP地址被转换成物理地址。

63、用电路交换技术完成的数据传输要经历电路建立、数据传输
、电路拆除 过程。

64、局域网中所使用的双绞线分成两类,屏蔽双绞线、非屏蔽双绞线

65、计算机网络中常用的三种有线媒体是同轴电缆、双绞线、光纤

68、曼彻斯特编码是一种同步方式为自同步的编码方案。

70、运输层的运输服务有两大类:面向连接的服务和无连接的服务。

71、TCP在IP的基础上,提供端到端的面向连接的可靠传输。

72、子网掩码的作用是判断两台主机是否在同一子网中

73、标准的B类IP地址使用16位二进制数表示网络号。

74、在TCP/IP层次模型的网络层中包括的协议主要有IP、ICMP、  ARP 及 RARP

75、32位全为1(255.255.255.255)的IP地址叫做有限广播地址,用于本网广播。

77、在TCP/IP层次模型中运输层相对应的主要协议有TCP(传输控制协议),     UDP(用户数据报协议)

79、域名系统DNS是一个分布式数据库系统。

80、WWW上的每一个网页都有一个独立的地址,这些地址称为统一资源定位器

81、在WWW中,使用统一资源定位器URL来唯一地标识和定位因特网中的资源,它由三部分组成:协议,主机地址(域名),文件路径名

82、支持在电子邮件中传输汉字信息的协议是MIME

1.从哈希表,二叉树和链表中取元素需要多少时间?

哈希表需要O(1),二叉树需要O(logN) (N是树中节点数),链表需要O(N) (N是链表中节点数)

2.覆盖(Overriding)和重载(Overloading)的区别是什么?

覆盖在运行时决定,重载是在编译时决定。并且覆盖和重载的机制不同,例如在Java中,重载方法的签名必须不同于原先方法的,但对于覆盖签名必须相同。

  1. 值类型和引用类型有什么区别?

值类型是更加优化的类型,总是不可变的(immutable),例如Java原始的int、long、double和float。引用类型指向一个对象,可能是可变的,也可能是不变的。你也可以说值类型指向一个值,引用类型指向一个对象。

  1. 什么是在进程中的堆和栈?(detailed answer)

在同一个进程中,有两块不同的内存区域。以Java来说,栈用来存储原始值和指向对象的引用类型,但对象本身总是在堆中被创建。堆和栈的一个重要区别是,堆内存被所有线程共享,但每个线程有自己的栈。

  1. 线程和进程的关系是什么?(detailed answer)

一个进程可以有多个线程,但一个线程总是属于唯一的进程。两个进程不能共享内存空间,除非它们有意通过共享内存进行进程间通信。但是同一进程的两个线程总是共享相同的内存。

  1. 类和对象的区别是什么? (detailed answer)

类是用来创建对象的设计图。一个类包括代码和行为,一个对象包括状态和行为。要创建一个对象,你必须创建一个表达对象结构的类。类还被用来在内存中映射对象,在Java中,JVM替你完成这项工作。

  1. 组合,聚合和关联的区别是什么?

关联的意思是两个对象是相互联系的。组合是关联的一种形式,即一个对象由多个对象组成,但是它们必须共存,聚合也是关联的一种形式,表示对象的集合。

  1. 接口和抽象类有什么区别?

接口是最纯粹的抽象形式,没有任何具体的东西。抽象类是一些抽象和具体事物的组合体。在Java中你可以扩展(extend)多个接口,但只能继承一个抽象类。

  1. 迭代和递归有什么区别?

迭代通过循环来重复执行同一步骤,递归通过调用函数自身来做重复性工作。递归经常是复杂问题(例如汉诺塔、反转链表或反转字符串)的清晰简洁的解决方案。

  1. &和&&运算符的区别是什么?

&是位运算符,&&是逻辑运算符。&和&&的一个区别是位运算符(&)可以被用于整型和布尔类型,逻辑运算符(&&)只能被用于布尔类型变量。当你写a & b时,两个整型数的每一位都会进行与运算。当你写a &&
b时,第二个参数可能会也可能不会被执行,这也是它被称为短路运算符的原因,

  1. 如何得到一个整型数的最后一位?

数字 % 10返回数字的最后一位。除运算符可以用来去掉数字的最后一位,

  1. 二叉树和二叉查找树的区别是什么?

二叉查找树是有序的二叉树,所有节点(例如根节点)的左子树节点的值都小于或等于该节点的值,右子树节点的值都大于或等于该节点的值。

  1. 算法的时间复杂度是什么?

他表示一个算法处理一定量的输入需要多长时间。

  1. 链表和数组有哪些重要区别?

数组将元素存放在连续的地址中,链表将数据存放在内存中任意的位置。这使得链表有巨大的扩展自己的灵活性,因为内存总是分散的。

  1. 在哈希表中处理冲突的方法都有哪些?

线性探测,二次哈希和链接。

  1. 正则表达式是什么意思? (answer)

正则表达式是在文本型数据上进行模式匹配的方法。

  1. 什么是无状态(stateless)系统?

无状态系统是不维护内部状态的系统。这种系统在任何时刻,对相同的输入都会给出相同的输出。

158.分治算法的思想:将一个难以直接解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。

159.回溯法思想:一个解的各个部分是逐步生成的,当发现当前生成的某部分不满足约束条件时,就放弃该步所做的工作,退到上一步进行新的尝试,而不是放弃整个解重来。

3、交换机与路由器有什么区别?

①工作所处的OSI层次不一样,交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层网络层

②寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址

③转发速不同:交换机的转发速度快,路由器转发速度相对较慢。

10、网络接口卡(网卡)的功能?

(1)进行串行/并行转换。

(2)对数据进行缓存。

(3)在计算机的操作系统安装设备驱动程序。

(4)实现以太网协议。

  1. TTL是指生存时间

161.机构化设计的三种基本结构是:顺序结构、选择结构和循环结构。

162.贪心算法指:在对问题求解时,总是做出在当前看来最好的选择。它不从整体最忧伤加以考虑,他所作出的仅是在某种意义上的局部最优解。最小生成树,和克鲁斯卡尔算法都是贪心算法。

2.   比较TCP与UDP

TCP与UDP都是传输层的协议,且都用端口号标识数据所达的进程。

TCP提供的是面向连接服务,提供可靠交付。且具有流量控制和拥塞控制。可用于可靠要求高的场合如:SMTP,FTP,HTTP等

UDP提供的是无连接服务,提供不可靠交付,且无确认机制。主要用于即时强的场合如:视频聊天,语音电话等。

3.    网络协议的三个核心要素,及概念 .各起什么作用?

语法,定义了数据与控制信息的格式;

语义,定义了需要发出何种控制信息,完成何种响应动作以及作出何种响应;

同步,定义了事件实现顺序的详细说明;

11.  死锁是什么?指多个有关进程由于争夺资源而造成的一种僵局,在无外力的情况下这些进程都将无法再向前推进的状态。

13.   举例解释一下同步和互斥

同步表现为直接制约。互斥表现为间接制约。

22.  波特和比特的区别?

波特是码元传输的踵率单位,说明每秒传多少个码元。码元传输速率也称为调制速率、波形速率或符号速率。

比恃是信息量的单位,与码元的传输速率"波特"是两个完全不同的概念。

但是,信息的传输速率"比特/秒"与码元的传输速率"波特"在数量上却有一定的关系。

23.   什么是网络延时

时延是指一个报文或分组从一个网络(或一条链路)的一端传送到另一端所需的时间。

25.  什么是码元?什么是码元长度?

在数字通信中常常用时间间隔相同的符号来表示一位二进制数字。这样的时间间隔内的信号称为二进制码元,而这个间隔被称为码元长度。

30.  SQL的四个组成部分?

数据定义子语言、数据操纵子语言、数据控制子语言、系统存储过程。

32.   介绍下有哪些应用数据库?

SQL数据库,DB2数据库,access数据库,Oracle数据库等等。

  1. 面向对象技术具有3大基本特征是:封装性、继承性和多态性。

1.封装性就是把对象的属性和方法结合成一个独立的单位,并尽可能隐蔽对象的内部细节,它包含两个方面的含义:

2.继承性的本质是在已有的类的基础上进行扩充或改造,得到新的数据类型,以满足新的需要。

3.多态性一般是指在父类中定义的方法被子类继承后,可以表现出不同的行为。这使得同一个方法在父类及其各个子类中具有不同的语义。

  1. 什么是完全图?

每队顶点之间都恰连有一条边的图。

165.1957年成立。

166.神经网络,它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。

168.

你可能感兴趣的:(复试面试问题)