Java面试——基础

1、面向对象与面向过程区别。

面向对象:
将事务高度抽象化的编程模式。 占用资源低,速度快

面向过程:
自顶而下的编程模式。 占用资源高,速度慢

2、面向对对象三大特性

封装:把客观事物封装成抽象的类,在一个对象内部,某些数据是私有的,不能被外界访问,对内部数据提供了不同级别的保护。

继承:可以使现有类的所有功能,在无需重新编写原来的类的情况下对这些功能进行扩展。

多态:一个类实例的相同方法在不同情形有不同的形式。

3、面向对象五大原则

单一职责原则

开放封闭原则

里氏代替原则

依赖倒置原则

接口隔离原则

4、instanceof关键字作用

instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:


boolean result = obj instanceof Class

其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或

间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。

注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定

类型,则通过编译,具体看运行时定。

int i = 0;

System.out.println(i instanceof Integer);//编译不通过i必须是引用类型,不能是基本类型

System.out.println(i instanceof Object);//编译不通过

Integer integer=new Integer(1);

System.out.println(integer instanceof Integer);//true

//false,在JavaSE规范中对instanceof运算符的规定就是:如果obj为null,那么将返回false。

System.out.println(null instanceof Object);

5、隐式转换和显式转换

隐式转换:大范围的变量能够接受小范围的数据。

显式转换:把一个大类型的数据强制复制给小类型的数据。

隐式转换和显示转换其实就是自动类型转换和强制类型转换。

6、char类型能不能转成int类型,String,double

Char在java中也是比较特殊的类型,它的int值从1开始,一共有2的16次方个数据;

Char<int<long<float<double;Char类型可以隐式转成int,double类型,但是不能隐式转换成string;如果char类型转成byte,short类型的时候,需要强转。

7、基本数据类型

8种

整型:byte,short,int,long(默认值都是0)

浮点型:float,double(默认0.0)

字符型:char(默认‘’)

布尔型:boolean(默认false)

8、什么是拆装箱

装箱:自动将基本数据类型转换成为包装类型(int → Integer);调用方法:Integer的valueOf(int)方法。

拆箱:自动将包装器类型转换为基本数据类型(Integer → int)。调用方法:Integer的intValue()方法。

9、访问修饰符

修饰符 当前类 同包 子类 其他包
public
protected 不能
default 不能 不能
private 不能 不能 不能

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开public,对于不是同一个包中的其他类相当于私有private。受保护(protected)对子类相当于公开,对不是同一个包中的没有父子关系的类相当于私有。java中,外部类的修饰符只能是public或者默认,类的成员(包括内部类)的修饰符可以是以上四种。

10、float f = 3.4是否正确

3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型,会造成精度损失。

11、short s1 = 1;s1 = s1+1和short s1 = 1;s1+=1

对于short s1 = 1;s1 = s1+1,由于1是int,因此s1 + 1运算结果也是int型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1+=1,可以正确编译。因为s1+=1,相当于s1 = (short)(s1+1)其中有隐含的强制类型转换。

12、重载和重写

重载:

重载overload是一个类中多态性的一种表现

重载要求同名方法的参数列表不同

重载的时候,返回值类型可以相同也可以不同。无法以返回型作为重载函数的区分标准

重写:

发生在父类与子类之间方法名,参数列表,返回类型必须相同

访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)

重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

13、equals与==区别

equals:

比较两个对象的内容是否相等

==:

==比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。

14、i++与++i区别

i++:先赋值,后计算

++i:先计算,后赋值

15、实参与形参

实参(argument):

全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

形参(parameter):

全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。

例如:todo

16、static关键字

static可以修饰内部类、方法、变量、代码块

static修饰的类是静态内部类

static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象,静态方法也不能被重写,可以直接使用类名来调用,在static方法中不能使用this或者super关键字

static修饰变量是静态变量或者叫类变量,静态变量是被所有实例所共享,不会依赖于对象。静态变量在内存中只有一份拷贝,在jvm加载类的时候,只为静态分配一次内存。

static修饰的代码块叫静态代码块,通常同来做程序优化的,静态代码块中的代码在整个类加载的时候只会执行一次。静态代码块可以有多个,如果有多个,按照先后顺序依次执行。

17、final

被final修饰的类不能被继承

被final修饰的方法不可以被重写

被final修饰的变量不可以被改变,如果修饰引用,那么表示引用不可变,引用指向的内容可变

被final修饰的方法,jvm会尝试将其内联,以提高运行效率

被final修饰的常量,在编译阶段会存入常量池

18、String,StringBuffer,stringBuilder

String:只读字符串,被final修饰,每次对String的操作都会生成新的String对象

StringBuffer和StringBuilder都继承了AbstractStringBulder类,在做字符串拼接修改删除替换时,效率比String更高。

StringBuffer是线程安全的,加了synchronized关键字

String str = “aaa”与String str = new String(”aaa”)区别

todo

19、Java创建对象有几种方式

new

反射

clone

序列化机制(调用java.io.ObjectInputStream对象的 readObject()方法。)

20、集合

image.png

HashMap

为什么是0.75

为什么扩容是2的倍数

红黑树

21、java提供了哪些io方式?NIO如何实现多路复用

同步阻塞io/BIO

同步非阻塞io/NIO

异步非阻塞io/AIO

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 什么是跨平台性?原理是什么? 所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。实现...
    在error边缘疯狂试探阅读 74评论 0 0
  • 1 、一个".java" 源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个 pub...
    尽人事听天命_6c6b阅读 143评论 0 0
  • 集合框架: 1)特点:存储对象;长度可变;存储对象的类型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang阅读 1,239评论 0 4
  • 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: -抽象:抽象就是忽略一个主题中与当前目标无...
    山的那边是什么_阅读 561评论 0 8
  • 1.什么是JDK?什么是JRE?JDK:java development kit:java开发工具包,是开发人员所...
    w_yong阅读 373评论 0 0