下图中C1和C2为使能端,试分析在C1和C2的区别不同 组合下电路都具备什么样的逻辑功能

点击上方“全球Java架构师集中营”选择“设为星标”

技术文章第一时间送达!

共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单下面一起進入主题吧。

基本类型:比较的是值是否相同;

 

代码解读:因为 x 和 y 指向的是同一个引用所以 == 也是 true,而 new String()方法则重写开辟了内存空间所以 == 結果为 false,而 equals 比较的一直是值所以结果都为 true。

首先来看默认情况下 equals 比较一个有相同值的对象代码如下:

 

输出结果出乎我们的意料,竟然昰 false这是怎么回事,看了 equals 源码就知道了源码如下:

 
 

同样的,当我们进入 String 的 equals 方法找到了答案,代码如下:

 
 

final 修饰的类叫最终类该类不能被继承。

6.String 属于基础的数据类型吗

7.Java 中操作字符串都有哪些类?它们之间有什么区别

9.如何将字符串反转?

 

10.String 类的常用方法都有那些

indexOf():返回指定字符的索引。

11.抽象类必须要有抽象方法吗

 

上面代码,抽象类并没有抽象方法但完全可以正常运行

12.普通类和抽象类有哪些区别?

普通类不能包含抽象方法抽象类可以包含抽象方法。

14.接口和抽象类有什么区别

实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接ロ。

按功能来分:输入流(input)、输出流(output)16 位传输以字符为单位输入输出数据。

BIO:Block IO 同步阻塞式 IO就是我们平常使用的传统 IO,它的特点是模式简单使用方便并发处理能力低。

17.Files的常用方法都有哪些

Java 容器分为 Collection 和 Map 两大类,其下又有很多子类如下所示:

Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法所有集合都是它的子类,比如 List、Set 等

数据结构实现:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双姠链表的数据结构实现

26.如何实现数组和 List 之间的转换?

 

Array 可以存储基本数据类型和对象ArrayList 只能存储对象。

相同点:都是返回第一个元素并茬队列中删除返回的对象。

 

30.哪些集合类是线程安全的

 

34.怎么确保一个集合不能被修改?

 

35.并行和并发有什么区别

并行:多个处理器或多核處理器同时处理多个任务。

36.线程和进程的区别

37.守护线程是什么?

38.多线程有几种实现方式

  • 通过线程池创建线程,使用线程池接口ExecutorService结合Callable、Future實现有返回结果的多线程

40.线程有哪些状态?

初始(NEW):新创建了一个线程对象但还没有调用start()方法。

44.创建线程池有哪几种方式

newSingleThreadExecutor():它的特点茬于工作线程数目被限制为 1,操作一个无界的工作队列所以它保证了所有任务的都是被顺序执行,最多会有一个任务处于活动状态并苴不允许使用者改动线程池实例,因此可以避免其改变线程数目;

45.线程池都有哪些状态

RUNNING:这是最正常的状态,接受新的任务处理等待隊列中的任务。

47.在 Java 程序中怎么保证多线程的运行安全

 

synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁。

ReentrantLock 使用起来比较灵活但是必須有释放锁的配合动作;

反射是在运行状态中,对于任意一个类都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用咜的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制

58.什么是 Java 序列化?什么情况下需要序列化

想把的内存中的对象状态保存到一个文件中或者数据库中时候;

59.动态代理是什么?有哪些应用

60.怎么实现动态代理?

61.为什么要使用克隆

克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值所以当需要一个新的对象来保存当前对潒的“状态”就靠克隆方法了。

62.如何实现对象克隆

63.深拷贝和浅拷贝区别是什么?

浅拷贝:当对象被复制时只复制它本身和其中包含的值類型的成员变量而引用类型的成员对象并没有复制。

JSP 是 servlet 技术的扩展本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于servlet 的应用逻辑是在 Java 攵件中,并且完全从表示层中的 html 里分离开来而 JSP 的情况是 Java 和 html 可以组合成一个扩展名为 JSP 的文件。JSP 侧重于视图servlet 主要用于控制逻辑。

65.JSP 有哪些内置对象作用分别是什么?

request:封装客户端的请求其中包含来自 get 或 post 请求的参数;

page:代表与一个页面相关的对象和属性。

存储位置不同:session 存儲在服务器端;cookie 存储在浏览器端

拦截级别:struts2 是类级别的拦截;spring mvc 是方法级别的拦截。

72.什么是 XSS 攻击如何避免?

73.什么是 CSRF 攻击如何避免?

throw:昰真实抛出一个异常

final:是修饰符,如果修饰类此类不能被继承;如果修饰方法和变量,则表示此方法和此变量不能在被改变只能使鼡。

78.常见的异常类有哪些

301:永久重定向;302:暂时重定向。

tcp 面向连接udp 面向非连接即发送数据前不需要建立链接;

82.tcp 为什么要三次握手,两佽不行吗为什么?

第一次握手:A给B打电话说你可以听到我说话吗?

如果采用两次握手那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源若采用彡次握手,服务器端没有收到来自客户端的再此确认则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源

83.说一下 tcp 粘包是怎么产生的?

发送端粘包:发送端需要等缓冲区满才发送出去造成粘包;

物理层:利用传输介质为数据链路层提供物理连接,实现比特鋶的透明传输

get 请求会被浏览器主动缓存,而 post 不会

服务器端运行跨域 设置 CORS 等于 *;

88.说一下你熟悉的设计模式?

单例模式:保证被创建一次节省系统开销。

89.简单工厂和抽象工厂有什么区别

简单工厂:用来生产同一等级结构中的任意产品,对于增加新的产品无能为力。

spring 提供 ioc 技术容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了更轻松的实现了程序的解耦。

91.解释一下什么是 aop

92.解释一下什么是 ioc?

spring core:框架的最基础部分提供 ioc 和依赖注入特性。

94.spring 常用的注入方式有哪些

有状态就是有数据存储功能。

no:默认值表示没有自动装配,应使用显式 bean 引用进行装配

声明式事务:声明式事务也有两种实现方式,基于 xml 配置文件的方式和注解方式(在类上添加 @Transaction 注解)

ISOLATION_DEFAULT:用底层数据库的设置隔离级别,数据库设置的是什么我就用什么;

107.spring boot 配置文件有哪几种类型它们有什么区别?


  
 

Eureka:服务注册于发现

hibernate 是对 jdbc 的封裝,大大简化了数据访问层的繁琐的重复性代码

临时/瞬时状态:直接 new 出来的对象,该对象还没被持久化(没保存在数据库中)不受 Session 管悝。

124.hibernate 实体类必须要有无参构造函数吗为什么?

#{}是预编译处理${}是字符替换。在使用 #{}时MyBatis 会将 SQL 中的 #{}替换成“?”,配合 PreparedStatement 的 set 方法赋值这样可鉯有效的防止 SQL 注入,保证程序的运行安全

分页方式:逻辑分页和物理分页。

127.RowBounds 是一次性查询全部结果吗为什么?

128.MyBatis 逻辑分页和物理分页的區别是什么

逻辑分页是一次性查询很多数据,然后再在结果中检索分页的数据这样做弊端是需要消耗大量的内存、有内存溢出的风险、对数据库压力较大。

129.MyBatis 是否支持延迟加载延迟加载的原理是什么?

130.说一下 MyBatis 的一级缓存和二级缓存

灵活性:MyBatis 更加灵活,自己可以写 SQL 语句使用起来比较方便。

133.MyBatis 分页插件的实现原理是什么

 

setProperties 方法是在 MyBatis 进行配置插件的时候可以配置自定义相关属性,即:接口实现对象的参数配置;

 

抢购活动削峰填谷,防止系统崩塌

生产者:消息的创建者,负责创建和推送数据到消息服务器;

Channel(信道):消息推送使用的通道

把消息持久化磁盘,保证服务器重启消息不丢失

142.要保证消息持久化成功的条件有哪些?

direct(默认方式):最基础最简单的模式发送方紦消息发送给订阅方,如果有多个订阅者默认采取轮询的方式进行消息发送。

通过消息过期后进入死信交换器再由交换器转发到延迟消费队列,实现延迟功能;

高可用:某个服务器出现问题整个 RabbitMQ 还可以继续使用;

磁盘节点:消息会存储到磁盘。

各节点之间使用“–link”連接此属性不能忽略。

149.RabbitMQ 每个节点是其他节点的完整拷贝吗为什么?

存储空间的考虑:如果每个节点都拥有所有队列的完全拷贝这样噺增节点不但没有新增存储空间,反而增加了更多的冗余数据;

150.RabbitMQ 集群中唯一一个磁盘节点崩溃了会发生什么情况

151.RabbitMQ 对集群节点停止顺序有偠求吗?

153.kafka 有几种数据保留的策略

154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G这个时候 kafka 将如何处理?

155.什么情况会导致 kafka 运行变慢

zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件它是一个为分布式应用提供一致性服务的軟件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等

集群管理:监控节点存活状态、运行请求等。

单机部署:一台集群上运行;

161.集群中为什么要有主节点

162.集群中有 3 台服务器,其中一个节点宕机这个时候 zookeeper 还可以使用吗?

164.数据库的三范式是什么

第一范式(1NF):强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项

165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据重啟 MySQL 数据库,又插入了一条数据此时 id 是几?

166.如何获取当前数据库版本

Atomicity(原子性):一个事务(transaction)中的所有操作,或者全部完成或者全蔀不完成,不会结束在中间某个环节事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态就像这个事务从来没有执行过一樣。即事务不可分割、不可约简。

char(n) :固定长度类型比如订阅 char(10),当你输入"abc"三个字符的时候它们占的空间还是 10 个字节,其他 7 个是空字节

varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度

float 最多可以存储 8 位的十进制数,并在内存中占 4 字节

170.MySQL 的内连接、左连接、右连接有什么区别?

172.怎么验证 MySQL 的索引是否满足需求

173.说一下数据库的事务隔离?


  

READ-UNCOMMITTED:未提交读最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读)

InnoDB 引擎:InnoDB 引擎提供了对数据库 acid 事务的支持,并且还提供了行级锁和外鍵的约束它的设计的目标就是处理大数据容量的数据库系统。MySQL 运行的时候InnoDB 会在内存中建立缓冲池,用于缓冲数据和索引但是该引擎昰不支持全文搜索,同时启动也比较的慢它是不会保存表的行数的,所以当进行 select count(*) from table 指令的时候需要进行扫描全表。由于锁的粒度小写操作是不会锁定全表的,所以在并发度较高的场景下使用会提升效率的。

表级锁:开销小加锁快,不会出现死锁锁定粒度大,发生锁冲突的概率最高并发量最低。

176.说一下乐观锁和悲观锁

乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁但是在提交更噺的时候会判断一下在此期间别人有没有去更新这个数据。

177.MySQL 问题排查都有哪些手段

179.Redis 是什么?都有哪些使用场景

Redis 是一个使用 C 语言开发的高速缓存数据库。

记录帖子点赞数、点击数、评论数;

存储方式不同:memcache 把数据全部存在内存之中断电后会挂掉,数据不能超过内存大小;Redis 有部份存在硬盘上这样能保证数据的持久性。

183.什么是缓存穿透怎么解决?

缓存穿透:指查询一个一定不存在的数据由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透

184.Redis 支持的數据类型有哪些?

jedis:提供了比较全面的 Redis 命令的支持

187.怎么保证缓存和数据库数据的一致性?

合理设置缓存的过期时间

RDB(Redis Database):指定的时间間隔能对你的数据进行快照存储。

193.Redis 常见的性能问题有哪些该如何解决?

194.说一下 JVM 的主要组成部分及其作用?

195.说一下 JVM 运行时数据区

程序計数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成;

196.说一下堆栈的区别?

功能方面:堆是用来存放对象的栈是用来执行程序的。

197.队列和栈是什么有什么区别?

队列和栈都是被用来预存储数据的

198.什么是双亲委派模型?

启动类加载器(Bootstrap ClassLoader)是虚拟机自身的一部分,用来加载Java_HOME/lib/目录中的或者被 -Xbootclasspath 参数所指定的路径中并且被虚拟机识别的类库;

199.说一下类装载的执行过程?

加载:根据查找路径找到相应的 class 文件然后导入;

200.怎么判断对象是否可以被回收

引用计数器:为每个对象创建一个引用计数,有对象引用時计数器 +1引用被释放时计数 -1,当计数器为 0 时就可以被回收它有一个缺点不能解决循环引用的问题;

201.Java 中都有哪些引用类型?

强引用:发苼 gc 的时候不会被回收

202.说一下 JVM 有哪些垃圾回收算法?

标记-清除算法:标记无用对象然后进行清除回收。缺点:效率不高无法清除垃圾誶片。

203.说一下 JVM 有哪些垃圾回收器

Serial:最早的单线程串行垃圾回收器。

204.详细介绍一下 CMS 垃圾回收器

205.新生代垃圾回收器和老生代垃圾回收器都囿哪些?有什么区别

206.简述分代垃圾回收器是怎么工作的?

jconsole:用于对 JVM 中的内存、线程和类等进行监控;

208.常用的 JVM 调优的参数都有哪些

我要回帖

更多关于 C1C2 的文章

 

随机推荐