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

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

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

目录
相关文章
|
2月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
5月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
314 0
|
5月前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
287 4
|
4月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
436 0
|
4月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
213 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
2月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
5月前
|
存储 安全 Java
2025 最新史上最全 Java 面试题独家整理带详细答案及解析
本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
2878 48
|
5月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
161 5
|
5月前
|
Java API 微服务
2025 年 Java 校招面试全攻略:从面试心得看 Java 岗位求职技巧
《2025年Java校招最新技术要点与实操指南》 本文梳理了2025年Java校招的核心技术栈,并提供了可直接运行的代码实例。重点技术包括: Java 17+新特性(Record类、Sealed类等) Spring Boot 3+WebFlux响应式编程 微服务架构与Spring Cloud组件 Docker容器化部署 Redis缓存集成 OpenAI API调用 通过实际代码演示了如何应用这些技术,如Java 17的Record类简化POJO、WebFlux构建响应式API、Docker容器化部署。
255 5