2018java多线程面试题_2018年最全Java面试通关秘籍汇总集!

此套面试题适用于Java开发的各个阶段面试,不过更偏向初级和中级开发人员!由于每一个问题的答案不唯一且都可以在网上搜索到答案,这里只给出问题,不列出参考答案,有兴趣的可以留言讨论,也欢迎大家的补充!

一、基础篇

1.1、Java基础面向对象的特征:继承、封装和多态

继承:子类继承父类,关键字extend,子类可以继承父类所有方法,但是只有子类存在的方法,父类却不能调用。

封装:使用private进行封装,不让外部直接访问,访问需要get,set方法

多态:简单理解就是事物的多种形态。专业的术语说就是:同一个实现接口,使用不同的实例而执行不同的操作。重写,重载等。

final, finally, finalize 的区别?

final:final是一个修饰词,主要修饰常量,被它修饰的都是不可变的常量。

finally:finally是在try{}catch{}finally{}中执行的,主要意思是不论是否异常,都会执行finally其中的方法。

finalize:finalize是gc回收,每当使用,都会自动回收JVM的的对象。(如需深究,请查看强引用,弱引用等)

Exception、Error、运行时异常与一般异常有何异同

Exception:只运行时才会出现的异常,统称为Exception。

Error:是系统启动时报错,这类就是Error。

运行时异常和一般异常的差别是:俩个虽然都是错误,但是一个是在jvm启动好之后出现的,一个是在启动且没启动成功而出现的。

请写出5种常见到的runtime exceptionNullPointerException - 空指针引用异常

ClassCastException - 类型强制转换异常。

IllegalArgumentException - 传递非法参数异常。

ArithmeticException - 算术运算异常

ArrayStoreException - 向数组中存放与声明类型不兼容对象异常

IndexOutOfBoundsException - 下标越界异常

int 和 Integer 有什么区别,Integer的值缓存范围

int:默认是+-21亿。

Integer:是在int在包装的对象。

Integer的缓存范围在-128到127。

包装类,装箱和拆箱?

包装类:把一个基本类型包装成一个类,一个是可以使这个类型具有很多可以调用的方法。二个是Java向面像对象语言的靠近。

装箱:将基本类型转换成包装类对象

拆箱:将包装类转换成基本类型对象

String、StringBuilder、StringBuffer?

String是一个字符串,且并不安全。且当你每拼接一个String类型的数据,都等于new了一次String,内存消耗大。

StringBuilder是一个类,但是不是线程安全的,但是效率高,如果只是用在拼接,适用于他。

StringBuffer和StringBuilder一样,但是他是线程安全的,但是效率略微低一点。

重载和重写的区别?

重载:重载用于当前类,如果有一个get()方法,然后再写了一个get(int a);这就是重载。

重写:用在父子继承,当父类的方法被子类继承,就需要重写到子类。

抽象类和接口有什么区别

抽象类:抽象类使用abstract 关键字,有构造方法,可继承, 不能用private,final修饰。

接口:接口使用interface关键字,接口的所有属性和方法必需是公开的,且属性都是公开静态的常量。无构造方法,不可继承,可实现。

说说反射的用途及实现

反射最重要的用途就是开发各种通用框架。因为他可以直接用“.”来调用属性和方法来实现。

实现:

(1).Class.forName(className)

(2).类名.class

(3).this.getClass()。

说说自定义注解的场景及实现

HTTP请求的GET与POST方式的区别

get请求的话,是可以直接在浏览器看到请求参数。安全性低。

post请求的话,是不能自爱浏览器地址上看到请求参数。安全性高。

get传送的数据量较小,不能大于2KB。post传送的数据量较大,默认不受限制。

Session与Cookie区别

session存在服务端,比较安全,但是比较占用内存资源,cookie存在客户端,安全性偏低,cookie单个最大存3k左右的数据。

列出自己常用的JDK包

java.awt.*

java.lang.*

java.sql.date

java.util.date

java.io.*

MVC设计思想

model,view,controller、

提高可视性。但是代码会变得复杂。

equals与==的区别

equals是比较值。

==是比较值的地址。

hashCode和equals方法的区别与联系

1.equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的。

2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。

什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用

序列化:把Java对象转换为字节序列的过程。

反序列化:把字节序列恢复为Java对象的过程。

实现方式:

用io流把封装的数据传递给别人的接口,然后别人反序列化解析出对应的数据结构并保存。

Object类中常见的方法,为什么wait  notify会放在Object里边?

Java的平台无关性如何体现出来的

JDK和JRE的区别

Java 8有哪些新特性

1.2、Java常见集合List 和 Set 区别

Set和hashCode以及equals方法的联系

List 和 Map 区别

Arraylist 与 LinkedList 区别

ArrayList 与 Vector 区别

HashMap 和 Hashtable 的区别

HashSet 和 HashMap 区别

HashMap 和 ConcurrentHashMap 的区别

HashMap 的工作原理及代码实现,什么时候用到红黑树

多线程情况下HashMap死循环的问题

HashMap出现Hash DOS攻击的问题

ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数

手写简单的HashMap

看过那些Java集合类的源码

1.3、进程和线程线程和进程的概念、并行和并发的概念

创建线程的方式及实现

进程间通信的方式

说说 CountDownLatch、CyclicBarrier 原理和区别

说说 Semaphore 原理

说说 Exchanger 原理

ThreadLocal 原理分析,ThreadLocal为什么会出现OOM,出现的深层次原理

讲讲线程池的实现原理

线程池的几种实现方式

线程的生命周期,状态是如何转移的

1.4、锁机制说说线程安全问题,什么是线程安全,如何保证线程安全

重入锁的概念,重入锁为什么可以防止死锁

产生死锁的四个条件(互斥、请求与保持、不剥夺、循环等待)

如何检查死锁(通过jConsole检查死锁)

volatile 实现原理(禁止指令重排、刷新内存)

synchronized 实现原理(对象监视器)

synchronized 与 lock 的区别

AQS同步队列

CAS无锁的概念、乐观锁和悲观锁

常见的原子操作类

什么是ABA问题,出现ABA问题JDK是如何解决的

乐观锁的业务场景及实现方式

Java 8并法包下常见的并发类

偏向锁、轻量级锁、重量级锁、自旋锁的概念

1.5、JVMJVM运行时内存区域划分

内存溢出OOM和堆栈溢出SOE的示例及原因、如何排查与解决

如何判断对象是否可以回收或存活

常见的GC回收算法及其含义

常见的JVM性能监控和故障处理工具类:jps、jstat、jmap、jinfo、jconsole等

JVM如何设置参数

JVM性能调优

类加载器、双亲委派模型、一个类的生命周期、类是如何加载到JVM中的

类加载的过程:加载、验证、准备、解析、初始化

强引用、软引用、弱引用、虚引用

Java内存模型JMM

1.6、设计模式常见的设计模式

设计模式的的六大原则及其含义

常见的单例模式以及各种实现方式的优缺点,哪一种最好,手写常见的单利模式

设计模式在实际场景中的应用

Spring中用到了哪些设计模式

MyBatis中用到了哪些设计模式

关键字:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1256. 加密数字(bitset)

文章目录1. 题目2. 解题1. 题目 给你一个非负整数 num ,返回它的「加密字符串」。 加密的过程是把一个整数用某个未知函数进行转化,你需要从下表推测出该转化函数: 示例 1: 输入:num 23 输出:"10…

《C语言程序设计》第三章练习与习题答案

[练3-1]不需要&#xff1b;因为已经涵盖了所有可能的条件。[练3-2]#include<stdio.h>int main(void){int y;double x;printf("Enter x:");scanf("%lf",&x);if(x<0)y-1;else if(x0)y0;elsey1;printf("ysign(%f)%d\n",x,y);return 0;…

java 调用js 解析yml_nodejs库yaml读取yml或yaml配置文件

最近在使用TypeScript编写后台接口时&#xff0c;需要读取yaml配置文件&#xff0c;使用到了yaml这个nodejs库&#xff0c;其npm官网地址为&#xff1a;https://www.npmjs.com/package/yaml&#xff0c;github源代码地址为&#xff1a;github.com/eemeli/yaml比如有如下的confi…

java执行程序默认多线程吗_Java多线程 执行程序(1)

本文由作者收集整理所得&#xff0c;作者不保证内容的正确行&#xff0c;转载请标明出处。作者&#xff1a;关新全Java多线程执行程序(1)1.1Thread类static Thread.currentThread返回当前正在执行的线程对象的引用。join 等待线程终止。yield 暂停当前正在执行的线程对象&#…

LeetCode 531. 孤独像素 I

文章目录1. 题目2. 解题1. 题目 给定一幅黑白像素组成的图像, 计算黑色孤独像素的数量。 图像由一个由‘B’和‘W’组成二维字符数组表示, ‘B’和‘W’分别代表黑色像素和白色像素。 黑色孤独像素指的是在同一行和同一列不存在其他黑色像素的黑色像素。 示例: 输入: [[W,…

SSL证书配置指南

http://verisign.itrus.com.cn/html/fuwuyuzhichi/fuwuqizhengshuanzhuangpeizhizhinan/转载于:https://www.cnblogs.com/freeman-rain/archive/2012/04/27/2472856.html

LeetCode 533. 孤独像素 II

文章目录1. 题目2. 解题1. 题目 给定一幅由黑色像素和白色像素组成的图像&#xff0c; 与一个正整数N, 找到位于某行 R 和某列 C 中且符合下列规则的黑色像素的数量: 行R 和列C都恰好包括N个黑色像素。列C中所有黑色像素所在的行必须和行R完全相同。 图像由一个由‘B’和‘W…

简单的数据查询

简单查询的构成&#xff1a;由SELECT 子名 FROM 表 WHERE条件 ORDER BY 排序组成. 练习&#xff1a; 1.查询所有Inter的CPUSELECT * FROM sheet1$ WHERE c_name LIKE intel% 2.查询价格在100-200之间的金士顿内存SELECT * FROM sheet1$ WHERE c_money BETWEEN 100 AND 200 GROU…

java数组显示最大值,java 如何用方法在数组中找到最大值并显示他的名称?

public static void sub(int racetime[], String name[]) {int maxIndex 0; // 记录racetime最大值的下标for (int i 1; i if (racetime[i] > racetime[maxIndex]) {maxIndex i;}}System.out.println("Racetime最大的是" name[maxIndex]);}追问如何将 main和s…

Windows 8桌面的尴尬

刚出炉的Windows8可谓荣宠极致&#xff0c;此时却被指出存在问题&#xff0c;面临失宠的尴尬。到底是什么问题呢&#xff1f; Windows 8中新的用户界面&#xff0c;已被完全证明是两级分化日益严重。  混合操作系统是一个新的GUI概念&#xff0c;友好地触摸界面接口&#xff…

LeetCode 1101. 彼此熟识的最早时间(排序+并查集)

文章目录1. 题目2. 解题1. 题目 在一个社交圈子当中&#xff0c;有 N 个人。每个人都有一个从 0 到 N-1 唯一的 id 编号。 我们有一份日志列表 logs&#xff0c;其中每条记录都包含一个非负整数的时间戳&#xff0c;以及分属两个人的不同 id&#xff0c;logs[i] [timestamp,…

php管道的概念,让你的php命令行程序处理管道数据

linux下有一个强大的命令|(管道提示符).它的作用是将前一个命令的结果交给后一条命令并作为后一条命令的输入.而linux下的大多数命令也都支持这种方式.可是当笔者写完一个php的命令行小程序以后,对于怎样获得前一个命令的结果却陷入了僵局.难道php不支持这样的操作?于是又开始…

【转载】世界各地对BI的应用状况

欧美企业对商务智能的应用 商务智能活动在美国和欧洲比在世界上任何其他地区都要发达&#xff0c;商务智能已经由“旁门左道”转变为“主门正道”。欧美的企业已经认识到商务智能的重要意义&#xff0c;因而对它寄予很高的期望&#xff0c;希望能够通过商务智能充分利用企业以往…

php gearman 扩展,Ubuntu 12.04 安装 gearman 以及php扩展安装脚本

#!/usr/bash#create by lhb#date 2014-05-07#desc install gearman and php extension for Ubuntu 12.04.4 LTS PHP 5.5apt-get update#安装依赖库apt-get install libboost-all-dev gperf libevent1-dev libcloog-ppl0mkdir -pv /home/lhb/software && cd /home/lhb/s…

LeetCode 379. 电话目录管理系统(哈希set)

文章目录1. 题目2. 解题1. 题目 设计一个电话目录管理系统&#xff0c;让它支持以下功能&#xff1a; get: 分配给用户一个未被使用的电话号码&#xff0c;获取失败请返回 -1check: 检查指定的电话号码是否被使用release: 释放掉一个电话号码&#xff0c;使其能够重新被分配 …

数据异构

当下数据系统纷杂&#xff0c;每个公司都可能有多种多样的系统&#xff0c;然而每个系统都可能有部分业务数据可供外部使用。然后&#xff0c;貌似总能听到这个系统与那个系统进行交互的时候&#xff0c;开发人员总是在激烈的讨论如何互相开放API接口。但是这样的API接口真的够…

php sem acquire,PHP | 关于php中sem_get failed for key no space left on device问题的解决方案...

有时我们在处理并发操作时会使用信号量做进程同步,如下一个php应用的例子$sem_id sem_get($id,1,0666,true);sem_acquire($sem_id);...sem_release($sem_id);我们release了资源,但是系统没有真正的释放资源 通过 [rootlocalhost ~]# ipcs -s------ Semaphore Arrays -------- …

LeetCode 250. 统计同值子树(递归)

文章目录1. 题目2. 解题1. 题目 给定一个二叉树&#xff0c;统计该二叉树数值相同的子树个数。 同值子树是指该子树的所有节点都拥有相同的数值。 示例&#xff1a; 输入: root [5,1,5,5,5,null,5]5/ \1 5/ \ \5 5 5 输出: 4来源&#xff1a;力扣&#xff08;LeetC…

开启MySQL远程访问权限 允许远程连接

1、登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql;Database changedmysql> select host,user,password from user;---------------------------------------------------------------| host | user | password …

php 函数报错,PHP报错函数error_reporting()怎么用?

PHP中&#xff0c;报错函数error_reporting()用于规定应该报告何种PHP错误&#xff0c;语法“error_reporting(level)”&#xff1b;使用该函数可以设置在脚本运行时的错误级别&#xff0c;如果没有设置可选参数level&#xff0c;则仅返回当前的错误报告级别。推荐&#xff1a;…