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

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

1 lambda表达式

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

单列集合:List、Set

双列集合:Map

(1)遍历List集合

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

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

(2)遍历Map集合

2 equals与==的区别

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

4 如何跳出多重for循环

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 什么是匿名对象?匿名对象的应用场景?

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


2020122910560215.png


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


25 手写JDBC代码(*)

什么是JDBC:Java数据库连接


20201229105637530.png


26 this关键字与static关键字

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


20201229110148275.png


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


静态的特点:


随着类的加载而加载


优先与对象存在


对所有的对象共享


可以被类名直接调用


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

普通类:没有抽象的方法


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


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


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


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


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


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


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


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


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


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


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


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

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


多态发生的条件:


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


子类重写父类中的方法


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

20201229110807450.png


30 Properties类(*)

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


20201229110830368.png


31 final关键字

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


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


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


20201229110910999.png


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


Arrays、Math、Random等常用工具类


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


20201229110941778.png

20201229110951244.png


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


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


20201229110959483.png


Random工具类:随机数


2020122911102282.png


33 instanceOf关键字(*)

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


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


20201229111057812.png


34 可变参数

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


20201229111126301.png


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

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


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


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


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


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


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

常见的字节流:

20201229111218675.png



常见的字符流:



2020122911123550.png

区别:


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


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


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 深拷贝(深克列或深复制)或浅拷贝的区别

简单的说就是 浅拷贝的话就是两个对象引用一个地址,所以他们共享其中的属性和方法

深拷贝就是创建了一个一模一样的对象,但是内存地址不同 不共享属性和方法

目录
相关文章
|
21天前
|
缓存 Java 关系型数据库
【Java面试题汇总】ElasticSearch篇(2023版)
倒排索引、MySQL和ES一致性、ES近实时、ES集群的节点、分片、搭建、脑裂、调优。
【Java面试题汇总】ElasticSearch篇(2023版)
|
21天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
176 37
|
21天前
|
设计模式 安全 算法
【Java面试题汇总】设计模式篇(2023版)
谈谈你对设计模式的理解、七大原则、单例模式、工厂模式、代理模式、模板模式、观察者模式、JDK中用到的设计模式、Spring中用到的设计模式
【Java面试题汇总】设计模式篇(2023版)
|
21天前
|
存储 关系型数据库 MySQL
【Java面试题汇总】MySQL数据库篇(2023版)
聚簇索引和非聚簇索引、索引的底层数据结构、B树和B+树、MySQL为什么不用红黑树而用B+树、数据库引擎有哪些、InnoDB的MVCC、乐观锁和悲观锁、ACID、事务隔离级别、MySQL主从同步、MySQL调优
【Java面试题汇总】MySQL数据库篇(2023版)
|
21天前
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
21天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
21天前
|
缓存 Java 数据库
【Java面试题汇总】Spring篇(2023版)
IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、
【Java面试题汇总】Spring篇(2023版)
|
21天前
|
存储 缓存 监控
【Java面试题汇总】JVM篇(2023版)
JVM内存模型、双亲委派模型、类加载机制、内存溢出、垃圾回收机制、内存泄漏、垃圾回收流程、垃圾回收器、G1、CMS、JVM调优
【Java面试题汇总】JVM篇(2023版)
|
21天前
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)
|
21天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
下一篇
无影云桌面