Java面试题日积月累(JavaSE40道)

目录

1 lambda表达式

2 equals与”==”的区别

3 声明4个变量Integer i =127,j=127,m=128,n=128;请问”i==j”与”m==n”的结果为什么?

4 如何跳出多重for循环

5 native修饰符是什么意思?

6 &与&&的区别

7 什么是强制(显示)类型转换、隐式类型转换

8 jvm、jre、jdk的区别

9 静态变量、静态代码块、静态方法、构造方法的执行顺序

10 单例设计模式

11 String、StringBuffer、StringBuilder的区别?

12 ArrayList与LinkedList的区别?

13 HashMap与Hashtable的区别?

14 什么是编译时异常?什么是运行时异常?

15 常见的加密算法有哪些,详细解释其中一种?

16 标识符命名规则

17 Java中的数据类型

18 java语言的三种技术架构

19 重载与重写的区别

20 内存结构

21 谈一谈面向对象思想

22 成员变量与局部变量的区别

23 静态变量和成员变量的区别

24 什么是匿名对象?匿名对象的应用场景?

25 手写JDBC代码(*)

26 this关键字与static关键字

27 普通类、抽象类、接口之间相关面试题(*)

28 什么是多态?多态发生的条件

29 四种访问修饰符的访问权限

30 Properties类(*)

31 final关键字

32 Arrays工具类:主要用来操作跟数组相关的

33 instanceOf关键字(*)

34 可变参数

35 多线程相关面试题(*)

36 字节流与字符流区别(*)

37 什么是序列化

38 反射

39 xml

40 网络编程(*)


1 lambda表达式

lambda表达式是jdk8的新特性,出现的目的是为了简化集合的遍历。简化遍历的是Stream流.

单列集合:List、Set

双列集合:Map

(1)遍历List集合

(temp)充当临时变量用于接收集合元素,为了实现父类接口的对应的方法,一般使用lambda表达式接口中只有一个对应参数的方法,不能重复参数重复不能使用.

相当于给接口中的一个方法,方法不能参数

(2)遍历Map集合

2 equals与==的区别

声明4个变量Integer i =127,j=127,m=128,n=128;请问i==jm==n的结果为什么?

4 如何跳出多重for循环

带标签的结束break结束到固定位置.

5 native修饰符是什么意思?

native代表java访问其他语言编写的代码。

6 &与&&的区别

&&:逻辑与、短路与

语法规则:条件1 && 条件2,条件1与条件2同时为true的时候最终结果才为TRUE,否二全部为false

特点:&&当条件1为false的时候,条件2不会执行

&:语法:条件1 & 条件2

特点:条件1与条件2都会执行

7 什么是强制(显示)类型转换、隐式类型转换

将大的数据类型赋值小的数据类型称之为强制类型转换,会出现精度的损失

将小的数据类型赋值给大的数据类型:隐式类型转换

8 jvm、jre、jdk的区别

Jvm:java虚拟机,用于保证java的跨平台特性。

Jre:java的运行环境,包含jvm+lib(jar包)

Jdk:java的开发工具,包含jre+开发工具

9 静态变量、静态代码块、静态方法、构造方法的执行顺序

执行顺序是:静态变量-->静态代码块--->静态方法-->构造方法

10 单例设计模式

什么是单例:永远只能够创建一个对象

单例设计模式书写方式总共是有两种:饿汉式、懒汉式

书写单例设计模式的语法规则:

  1. 类中的构造方法私有

     2.需要提供一个公共的获取对象的方法

饿汉式单例设计模式:(好比人很饿,需要提前备好饭,这里的饭就是对象)

final修饰的话不可变,永远都是内个对象.

懒汉式单例设计模式: (懒汉就是饿了才会想起来做饭,饭就相当于创建对象)

线程的抢占会跑入这个判断,会创建多个对象,成为多例

11 String、StringBuffer、StringBuilder的区别?

String:当字符串频繁的被修改时,会在内存中不停的开辟空间,容易造成内存空间的浪费,当做字符串拼接的时候其实底层也是StringBuilder.

StringBuffer与StringBuilder当字符串不停的被修改时,一直使用的是同一个内存空间

StringBuffer在多线程是线程安全的

StringBuilder在多线程中会出现线程安全问题,在单线程中效率比StringBuffer效率要高

12 ArrayList与LinkedList的区别?

ArrayList底层是数组(Object类型的数组),LinkedList底层是链表

由于ArrayList底层是数组,因此它查询数据很快,但是对数据的增删比较慢;LinkedList查询很慢,但是增删很快

13 HashMap与Hashtable的区别?

1.HashMap与Hashtable底层都是Hash表

2.HashMap是jdk1.5之后出现的版本;Hashtable是jdk1.5之前出现

3.Hashtable是线程安全的,HashMap是线程非安全的

4. HashMap的key与value可以为null,但是Hashtable的key与value不能够为null

14 什么是编译时异常?什么是运行时异常?

15 常见的加密算法有哪些,详细解释其中一种?

常见的算法:DES、AES、RSA、Base64、MD5

16 标识符命名规则

可以由数字、字母、下划线(_)、$进行组合,不能够以数字作为开头

合法的命名:a1、_abc(不推荐)、abc$

17 Java中的数据类型

18 java语言的三种技术架构

J2ME:小型版本,是为开发电子消费产品和嵌入式设备提供的解决方案。手机

J2SE:Java标准版,集合、多线程、面向对象啊等

J2EE:企业版,jsp、servlet等

19 重载与重写的区别

重载:同一个类中多个方法的名字一样,但是参数的类型、参数的个数等不同

重写:子类中的方法与父类中的方法一样

20 内存结构

栈内存:用于存储局部变量,当数据使用完,所占用的空间会自动释放

堆内存:数组和对象,通过new建立的实例都存放在堆内存中

方法区:静态成员、构造函数、常量池、线程池

本地方法区:window系统占用

21 谈一谈面向对象思想

什么是面向对象:面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能进行封装。面向对象是java核心思想,这个思想来源于我们人的实际生活

面向对象的3大基本特征:封装(private)、继承(extends)、多态

22 成员变量与局部变量的区别

成员变量:直接放置在类中的变量称之为成员变量,与方法是平级关系。

局部变量:在方法体中声明的变量

成员变量与局部变量的区别:

1 作用域:成员变量针对整个类有效;局部变量在某个范围内有效(方法、循环体)

2 存储位置:成员变量随着对象的创建而存在,对象消失时成员变量就会消失,存储在堆内存中;局部变量在方法被调用,或者语句被执行的时候存在,存储在栈内存中。

3 初始值:成员变量有默认的初始值(类类型的初始值为Null,基本数据类型有各自特有的默认值)

23 静态变量和成员变量的区别

1 调用方式:静态变量也称之为类变量,可以直接通过类名来调用。也可以通过对象名来调用

2 存储位置:静态变量存储在方法区中的静态区域;成员变量存储在堆内存中

3 生命周期:静态变量随着类的加载而存在,随着类的消失而消失,生命周期很长;成员变量随着对象的创建而存在,当对象消失时成员变量随之消失

4 与对象的相关性:静态变量是所有对象共享的数据;成员变量是每个对象特有的

24 什么是匿名对象?匿名对象的应用场景?

什么是匿名对象:没有名字的对象,是对象的一种简写形式

匿名对象的应用场景:1、可以作为实际参数在方法传递中使用   2、只调用类中的一次方法

25 手写JDBC代码(*)

什么是JDBC:Java数据库连接

26 this关键字与static关键字

this关键字:代表的是本类对象的一个引用,谁调用this所在的方法,this就代表的是谁

Static关键字:用来修饰成员变量与成员方法

静态的特点:

随着类的加载而加载

优先与对象存在

对所有的对象共享

可以被类名直接调用

27 普通类、抽象类、接口之间相关面试题(*)

普通类:没有抽象的方法

抽象类:抽象类中可以有抽象方法,也可以一个抽象方法都没有

接口:1、接口中所有的方法都为抽象方法(public abstract修饰)  2、接口中所有的变量必须被public static final修饰

普通类是否可以继承抽象类:可以

普通类是否可以实现接口:可以

抽象类是否可以继承普通类:可以

抽象类是否可以继承抽象类:可以

抽象类是否可以继承接口:可以

接口是否可以继承普通类:不可以

接口是否可以继承抽象类:不可以

接口是否可以继承接口:可以

总结:接口不可以继承/实现任何类

28 什么是多态?多态发生的条件

什么是多态:指同一个对象,在程序不同时刻的多种运行状态。

多态发生的条件:

声明类型与实际类型不一致

子类重写父类中的方法

29 四种访问修饰符的访问权限

30 Properties类(*)

Properties类主要用来操作.properties配置文件

31 final关键字

final是一个修饰符,可以修饰类、变量、方法。

final修饰类时:当一个类被final修饰时,此类不能够被其他的类继承

final修饰变量时:变量就成为了一个常量

final修饰方法时:此方法不能够被子类重新

Arrays、Math、Random等常用工具类

32 Arrays工具类:主要用来操作跟数组相关的

Math工具类:主要是操作跟数学相关

常见的方法:abs(参数)、pow(2,3)

Random工具类:随机数

33 instanceOf关键字(*)

作用:用于判断某个对象是否是某个类型

语法:对象名 instanceOf 子类(实现)名,返回值为boolean

34 可变参数

可变参数是jdk1.5的新特性。

35 多线程相关面试题(*)

什么是进程:正在进行的程序。

什么是线程:进程内部的一条执行路径或者一个控制单元

实现线程的几种方式:1、让普通类继承Thread类  2、让普通类实现Runnable接口

run与start方法的区别:run方法存放线程需要执行的代码块;start方法用于启动线程

如何保证线程安全:将多个线程操作的共享对象用锁锁起来

36 字节流与字符流区别(*)

常见的字节流:

常见的字符流:

区别:

当读取纯文本文件(只有文字字符)时,使用字符流比较方便

当读取图片、视频、音频时需要使用字节流

37 什么是序列化

什么是序列化:对象最开始是不能够直接保存到磁盘中,如果需要将对象保存到磁盘中时,需要让对象实现序列化。

如何让对象实现序列化:1、让对象实现Serializable接口   2、生成序列号

38 反射

Class类是反射的根基,Class对象代表的是某一个类编译后的字节码文件(.class文件)。

创建Class类对象的三种方式:

Class.forName(类的全路径名);

类名.class

对象名.getClass();

39 xml

xml:目前主要用来做配置文件(springMVC、Spring、Mybatis、Hibernate、Struts2等)

xml的约束文件:dtd、xsd

解析xml文件的几种方式:dom解析(占用内存,前后反复遍历)、sax解析(节省内存,只能向后遍历数据)

40 网络编程(*)

协议:

TCP协议:3次握手(第1次:我问你在么?第2次:你回答 第3次:我反馈我知道你在)

UDP协议:将数据及源和目的封装成数据包,不需要建立连接

HTTP协议:超文本传输协议

41 深拷贝(深克列或深复制)或浅拷贝的区别

简单的说就是 浅拷贝的话就是两个对象引用一个地址,所以他们共享其中的属性和方法
深拷贝就是创建了一个一模一样的对象,但是内存地址不同 不共享属性和方法
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值