面试总结(一)

来源:互联网 发布:db2数据库创建用户 编辑:程序博客网 时间:2024/05/01 17:42

写在路上

记录 2017年8月11日模拟面试问题及答案,许多自己答得很模糊,再次总结语言。
面试总结(二)

问题与答案

回答基于JDK1.8,低版本部分答案不适用
1.Equals和==区别?

/** 答:==在基础数据类型中比较其大小,引用类型比较内存地址。 Equals在不重写的情况下与==相同,重写后是按照其本身方法内部规则进行判断。 任何类都继承自Object,Object中有Equals方法,其底层代码: */public boolean equals(Object obj) {        return (this == obj);    }

2.什么是传值和传址?

答:基础数据类型是传值,引用类型是传址,地址中的对象还是原对象,栈帧结束后 传值不改变,传址改变;

注意String例外,下面来讲。

    public void add(String str){        str+=123;    }    @Test    public void a(){      String str="123";      add(str);        System.out.println(str);    }    //结果是 123 

3.为什么我们常说字符串是不可变得?

/**答:因为String底层是char数组,并且用final修饰。因此每次创建String其原本字符串并不会消失或被替换,而会新建一个String,存储在字符串常量池中,堆区中因此在字符串中不要使用+=拼接字符串,在进行字符串拼接,必须使用StringBuilder或StringBufferStringBuffer是线程安全的,因为其修改方法用synchronized修饰*/ private final char value[];

4.switch switch case 类型?

答:支持char,byte,short,int及他们的包装类及String和枚举
Incompatible type .Found: ‘long’ ,require : ‘char,byte short,int,Character,Byte,Short,Integer,String,or an enum’;

5.运行时异常和一般异常有何异同

答:一般异常必须进行try catch或throw相应处理,运行时异常往往不进行处理。

6.try catch 和throws和throw如何使用?

答:throws向上抛出异常,调用部分继续throws或者try catch进行处理。throw new是现在抛出异常。

7.1/0报错? 异常类型,如何避免?

答:报错ArithmeticException(算术异常) 运行时异常,可以通过try catch进行捕获进行处理

8.问:Char int byte做加法运算

答:char运算时将字符转化成ASCII码进行整形运算,最后返回值为整形
9.单例设计模式两种实现方式
答:分别饥饿模式和懒汉模式。都通过getInstance获得实例,区别在于类实例是否在使用时在创建,还是在使用前就创建

10.String s = new String(“xyz”);在运行时涉及几个String实例?

答案:两个,一个是字符串字面量”xyz”所对应的、驻留(intern)在一个全局共享的字符串常量池中的实例,另一个是通过new String(String)创建并初始化的、内容与”xyz”相同的实例

11.冒泡排序

for(int i=0;i<unsorted.length+1;i++){   for(int j=0;j<unsorted.length-i-1;j++){       if(unsorted[j]>unsorted[j+1]){          Swap(unsorted,j,j+1);        }    }}

12.一个中文几个字节

答:2-4个字节,GBK两个,UTF-16 通常两个,BCD扩展4个 UTF-8 通常3个,B区扩展4个。
ArrayList和LinkedList区别 Vector 的存储性能和特性

13.问:Str=1+9+”abc”=? Str=”abc”+1+9=?

答 “10abc”和”abc19”,此时跟运算顺序和运算过程有关

14.计算几种的最小单位是什么,基础数据类型的大小

计算机中最小单位是byte(位),1字节8位。

基础数据类型有:byte(1) short(2) int(4) long(8) float(4) double(8) boolean(1/8) char(2)
注:单位是字节

15.抽象类和接口分别该什么时候用?

答:是什么用抽象类,干什么用接口。在JDK中Thread用抽象类,集合用接口。

16.类和抽象类区别?

答:抽象类中的abstract方法子类中必须实现。只抽取功能定义,不抽取功能主体。

17.什么是多态?

答:多态意为:一种事物的多种形态。多态包含编译时多态(函数的重载)和运行时多态,运行时多态体现在继承和实现接口上,包含传参(方法传递参数)多态,引用多态(父类引用子类对象重写方法),向上转型(子类转成父类对象),声明多态(父类指向子类对象)。

18.static和final可以放置的位置?

答:放在int声明前任意位置即可。

19.问 :short s1 = 1; s1 = s1 + 1;有什么错?

答:因为(隐式类型转换)short+int会自动转成int,但short+=相当于s = (short)(s+1),short=+1;相当于short=1;

20.短路语和全路语

答:短路语:&&和||在从左边到右判断时,已经可以判断出结果了就不继续了,而全路语|和&则要全部判断完毕

21.ASCII码和Unicode和gbk和utf-8

答:ASCII定义了128个字符的编码,Unicode(联合)包含了所有字符(语言)的编码,只规定了二进制编码,却未规定二进制编码如何存储。UTF-8是Unicode的实现方式之一,GBK和Unicode一样规定了字符的编码,GBK是大陆通用编码。

22.Overload和Override的区别

答:Overload(重载),Override(重写)

23.Interger缓冲区范围

答:-128-127,在Interger定义时在缓冲区范围涉及到拆箱比较,缓冲区IntegerCache。new 对象和直接赋值在范围内数据类似String;

24.如何实现多线程?

答:继承Thread类,或实现Runnable接口,实现其run方法。 启动通过Thread().start或线程池。

25.protected和default权限

答:public>protect>default>private。protected不能在其不同包的子类调用父类修饰的方法和属性。

26.属性和成员变量

答:实现面向对象的封装思想,属性私有化,方法公开化。成员变量根据其修饰外部调用。

27.封装能干什么?

答:隐藏细节,代码复用。

原创粉丝点击