Java 开发面试题,尧壁信科有限公司
笔试:
1、Java 中有几种类型的流?
字节流字符流,输入流输出流
2、什么是 java反射?
在程序的运行状态中,对于任意一个类,都可以知道整这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个属性和方法,这种动态获取的信息以及动态调用对象的方法功能被称为java反射机制。
3、创建 socket 通讯的步骤?
创建Socket;
将Socket与地址绑定,
设置Socket选项;
建立Socket之间的连接;
监听Socket;
接收、发送数据;
关闭、释放Socket;
4、举例几个常见的设计模式并说明其特点?
单例模式:存在懒汉与饿汉模式
单例模式特点:
一、实例控制
单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
二、灵活性
因为类控制了实例化过程,所以类可以灵活更改实例化过程。
工厂模式:简单工厂模式、工厂方法模式和抽象工厂模式
用工厂方法代替new操作的一种模式,会给系统带来更大的可扩展性和尽量少的修改量
策略模式:
具有相对稳定的形式,定义一些列算法的方法,这些所有的算法都是完成相同的工作,只是实现不同。它可以通过相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合
5、线程之间是如何进行通信的?
五种
使用 volatile 关键字,
使用Object类的wait() 和 notify() 方法;
使用JUC工具类 CountDownLatch;
基本LockSupport实现线程间的阻塞和唤醒;
使用 ReentrantLock 结合 Condition;
线程通行的目的在于当多个线程共同操作共享的资源时,互相告知自己的状态以避免资源争夺。
线程通信详解
6。当一个线程进入一个对象的 synchronized 方法 A 之后,其它线程是否可进入此对象的synchronized 方法B并说明原因?
不能,需要synchronized自动释放锁才能进入
7、如果你提交任务时,线程池队列已满,这时会发生什么?
两种情况
一个是无界队列,那么就不用担心,理论上无界队列可以添加无数个任务。
另一个是有界队列,首先添加到线程池中,如果线程池满了添加到等待队列当中,如果等待队列满了,那么就会阻塞,也就是拒绝策略。
8、springboot 核心配置文件是什么?
application 和 bootstrap 配置文件
9、SpringBopt 和 SpringCloud 的区别?
Spring Boot专注于快速方便的开发单个服务,SpringCloud属于依赖关系SpringBoot专注于快速方便的开发微服务个体SpringCloud关全局的服务治理,
Spring Boot是为了解决spring配置文件混乱、冗余、难以管理的问题,简化开发流程。Spring Cloud主要是解决,微服务之间的协调和配置问题,以及注册与发现、负载均衡、服务保护(熔断、网关)、通信等问题。
10、sql优化方式?
避免使用select *
控制索引数量
选择合理的字段类型
避免在 where 子句中对字段进行 null 值判断、使用!=或<>操作符以及使用 or 来连接条件
避免在where子句中对字段进行函数操作
11、聚集索引与非聚集索引有什么区别?
聚集索引是索引结构和数据一起存放的索引,非聚集索引是索引结构和数据分开存放的索引。
聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个
聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续
区别:
1.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个
2.聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续
3.聚集索引:物理存储按照索引排序;聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序。
4.非聚集索引:物理存储不按照索引排序;非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。
5.索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。
详解
12、什么是 Redis 过期策略和内存淘汰策略?
过期策略:
过期策略:定期删除+惰性删除
定期删除:每隔一段时间,我们就对一些key进行检查,删除里面过期的key。
惰性删除:key过期时间后,不去管它,当需要该key时,再检查其是否过期,如果过期,就删掉它,反之返回该key
内存淘汰策略
内存淘汰策略:
数据全放在内存中,内存的容量是有限的,有可能存在一些无效的缓存(就是长时间不使用的缓存),如果没有设置过期时间,这些无效的缓存不光会占用内存,导致物理内存不够,还会降低IO性能,时间复杂度增加
详解
13、MQ 有什么优缺点?
优点:解耦系统,异步化,削峰
缺点:系统可用性降低,复杂度增高,维护成本增高
14、Kafika、ActiveMQ,RabbitMQ,RocketMQ 都有什么区别?`
对于吞吐量来说kafka和rocketmq支持高吞吐,activemq和rabbitmq比他们低一个数量级。对于延迟量来说rabbitmq是最低的
详解
15、Nginx 有什么优点?
速度更快、并发更高
配置简单,扩展性强
高可靠性
热部署
成本低、BSD许可证
使用更少的内存和资源。
16、Nginx虚拟主机配置有哪几种配置方式?
1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站
2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台
3、基于ip的虚拟主机,几乎不用。
17、有什么常用的 Docker 命令?
docker version 显示 Docker 版本信息。
docker info 显示 Docker 系统信息,包括镜像和容器数
docker images 列出本地主机上的镜像
docker pull下 载镜像
docker search 搜索镜像
docker rmi 删除镜像
面试
几乎问的都是关于自己做的项目