面试中遇到的java笔试题(整理中)

1、Hadoop几大核心组成别为?

A. HDFS
B. MapReduce
C. Yarn
D. Hive
答案:ABC
解释:
Hadoop的三大核心组件分别是:
HDFS(Hadoop Distribute File System):hadoop的数据存储工具。
YARN(Yet Another Resource Negotiator,另一种资源协调者):Hadoop 的资源管理器。
Hadoop MapReduce:分布式计算框架

2、关于Hadoop,以下说法正确的是?

A. NN挂掉,数据丢失,分布式集群崩溃
B. DN挂掉,数据会丢失,分布式集群崩溃
C. SN挂掉,数据丢失,分布式集群崩溃
D. 以上都正确
答案:A
解释:
NN:Name Node 管理HDFS的命名空间,配置副本策略,管理数据块(Block)映射信息,处理客户端读写请求
DN:DataNode 存储实际的数据块,执行数据块的读/写操作
SN:SecondaryNameNode 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ,在紧急情况下,可辅助恢复NameNode

NN挂掉,数据丢失,分布式集群崩溃
DN挂掉,由于其他机器中存有备份,数据不会丢失,正常情况下对分布式集群不会出现大问题
SN挂掉,数据不会丢失,只是失去了对NameNode中映射的备份,为了防止意外(NN挂掉),需要尽快恢复SN

3、Kafka消息队列中的broker的作用是?

A. broker是消息的代理,作为保存消息中转站
B. producers往brokers里面指定的topic中写消息
C. consumers从brokers里面拉取指定的topic消息
D. 以上都不正确
答案:AC
解释:
B错了,producer是往borker上topic对应的leader分区写消息

4、Kafka为什么处理速度那么快?

A. 采用了Cache FileSystem Cache PageCache缓存
B. 采用了磁盘顺序写
C. Zero-copy零拷贝技术减少拷贝次数
D. Batching of Messages批量处理。合并小的请求,以流的方式进行交互,直至网络上限
答案:BC
解释:
用的page Cache和buffer Cache,没用file Cache
批量处理没用使用流方式交互,就一个socket连接交互

5、关于Kafka消息队列,下列说法正确的是?

A. 缓冲和削峰
B. 解耦和扩展性
C. 冗余消费
D. 异步通信
答案:ABCD

6、应用程序的测试包含?

A. 功能测试
B. 性能测试
C. 可用性测试
D. 客户端兼容性与安全性测试
答案:ABCD

7、关于压力测试、负载测试、性能测试的关系,说法正确的是?

A. 压力测试是在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响
B. 负载测试是在一定的工作负荷下,给系统造成的负荷及系统响应的时间
C. 性能测试是为了找到系统的正常、峰值及异常负载条件等各项指标
D. 以上都不正确
答案:ABC

8、以下哪些是性能测试关注的指标?

A. 响应时间
B. TPS
C. 服务器CPU使用率
D. 吞吐量
答案:ABCD

9、响应时间跟哪些因素有关?

A. 网络传输时间
B. 服务器处理请求时间
C. 前端渲染时间
D. 以上都正确
答案:ABCD

10、接口测试的目的是?

A. 发现页面操作发现不了的bug
B. 检测系统异常处理能力
C. 测试并发数
D. 修改请求参数,突破页面的限制
答案:ABCD
解释:
接口测试的必要性:
1.可以发现很多在页面上操作发现不了的bug
2.检查系统的异常处理能力
3.检查系统的安全性、稳定性
4.前端随便变,接口测好了,后端不用变
5.可以测试并发情况,一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
6.可以修改请求参数,突破前端页面输入限制(如金额)

11、大O算法通常表示的是?

A. 最坏情况
B. 最好情况
C. 平均情况
D. 都不是
答案:A
解释:
计算机科学经常用大O表示算法的复杂度或衡量性能,它主要用于描述在最坏的情况下所花费的时间和空间(内存或磁盘)。

12、树的表示方法有?

A. 双亲表示法
B. 孩子兄弟表示法
C. 孩子表示法
D. 以上都不对
答案:ABC
解释:
1.双亲表示法:
假设以一组连续空间存储树的结点,同时在每个结点中附设一个指示器指示其双亲结点在链表中的位置,其形式说明如下:

在这里插入图片描述

在这里插入图片描述
例如,图6.13展示一棵树及其双亲表示的存储结构。

这种存储结构利用了每个结点(除根以外)只有惟一的双亲的性质。PARENT(T,x)操作可以在常量时间内实现。反复调用PARENT操作,直到遇见无双亲的结点时,便找到了树的根,这就是ROOT(x)操作的执行过程。但是,在这种表示法中,求结点的孩子时需要遍历整个结构

2.孩子表示法
由于树中每个结点可能有多棵子树,则可用多重链表,即每个结点有多个指针域,其中每个指针指向一棵子树的根结点,此时链表中的结点可以有如下两种结点格式。

在这里插入图片描述
若采用第一种结点格式,则多重链表中的结点是同构的,其中d为树的度。由于树中很多结点的度小于d,所以链表中有很多空链域,空间较浪费,不难推出,在一棵有n个结点度为k的树中必有n(k-1)+1个空链域。若采用第二种结点格式,则多重链表中的结点是不同构的,其中J为结点的度,degre域的值同J。此时,虽能节约存储空间,但操作不方便。

另一种办法是把每 个结点的孩子结点排列起来 ,看成是一个线性表,且以单链表作存储结构,则n个结点有n个孩子链表(叶子的孩子链表为空表)。而n个头指针又组成一个线性表,为了便于查找,可采用顺序存储结构。这种存储结构可形式地说明如下:

在这里插入图片描述

在这里插入图片描述

图6.14(a)是图6.13中的树的孩子表示法。与双亲表示法相反,孩子表示法便于那些涉及孩子的操作的实现,却不适用于PARENT(T,x)操作,我们可以把双亲表示法和孩子表示法结合起来,即将双亲表示和孩子链表合在一起。图6.14(b)就是这种存储结构的一例,它和图6.14(a)表示的是同一棵树。

3、孩子兄弟表示法: (相当于前面讲的将一颗树转换成一颗二叉树)
又称二叉树表示法,或二又链表表示法,即以二又链表作树的存储树的存储结构。链表中结点的两个链城分别指向该结点的第一个孩子结点和下一个兄弟结点,分别命名为firstchild城和nextsibling城。

在这里插入图片描述
在这里插入图片描述

图6.15是图6.13中的树的孩子兄弟链表。利用这种存储结构便于实现各种树的操作。首先易于实现找结点孩子等的操作。例如:若要访问结点x的第i个孩子,则只要先从firstchild域找到第1个孩子结点,然后沿着孩子结点的nextsibling域连续走i-1步,便可找到x的第i个孩子。当然,如果为每个结点增设一个PARENT域,则同样能方便地实现PARENT(T,x)操作。

13、二叉树如图所示,前序遍历顺序为?

在这里插入图片描述

A. GDHBAEICF
B. GHDBIEFCA
C. ABDGHCEIF
D. 以上都不对
答案:C
解释:
一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树,则二叉树的遍历方式有 6 种:DLR、DRL、LDR、LRD、RDL、RLD。由于先遍历左子树和先遍历右子树在算法设计上没有本质区别,所以,只讨论三种方式:

DLR–前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面 )
LDR–中序遍历(根在中,从左往右,一棵树的左子树永远在根前面,根永远在右子树前面)
LRD–后序遍历(根在后,从左往右,一棵树的左子树永远在右子树前面,右子树永远在根前面)

前序遍历:ABDGHCEIF

中序遍历:GDHBAEICF
后序遍历:GHDBIEFCA

14、以下关于websocket协议,说法正确的是?

A. 是升级版的http协议
B. 是无状态协议
C. 需要三次握手建立连接
D. 基于udp协议
15、
以下关于http协议,说法不正确的是?
A. 301状态码表示内部服务器错误
B. 是无连接的
C. 是媒体独立的
D. 是无状态的
16、
http和https的说法中,正确的是?
A. https需要用到ca申请证书
B. http超文本传输协议,信息是明文传输,而https是ssl加密传输协议
C. http是80端口,https是443端口
D. http的连接是无状态的
17、
以下选项中,哪些可以查看历史命令?
A. history命令
B. last命令
C. 上下键
D. 左右键
18、
以下选项中,哪些全部都是只能用于纯文本的命令?
A. more、head、tail、cat
B. od、tr、wc、cut
C. diff、touch、cp、mv
D. 以上都不正确
19、
以下关于vim命令的使用,不正确的是?
A. 3中模式:命令模式、 输入模式、末行模式,其中命令模式是打开文件以后的默认模式
B. 可以使用dd、yy与p命令配合完成复制、粘贴、剪贴等功能
C. 在命令模式与末行模式中,快捷键参数不区分大小写
D. 末行模式下所有快捷键参数前都有一个冒号“:”
20、
进程和线程之间的区别,以下说法正确的是?
A. 进程有自己的独立地址空间,线程没有
B. 进程是资源分配的最小单位,线程是CPU调度的最小单位
C. 进程和线程通信方式不同,同一进程下的线程共享数据(如全局变量、静态变量),而进程之间的通信只能通过进程通信通信的方式
D. 进程上下文切换开销小,线程开销大
21、
进程间通信方式有?
A. 用信号量进行进程间的互斥和同步,交换的信息量少,是一种低级进程通信
B. 共享存储器系统(存储器中划分的共享存储区域)
C. 消息传递系统(进程间的数据交换以消息(Message)为单位)
D. 管道通信系统(连接读写进程来实现他们之间通信的共享文件)
22、
关于进程和线程之间的关系,以下说法正确的是?
A. 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位
B. 资源分配给进程,同一进程的所有线程线程共享该进程的所有资源
C. 处理机分给进程,即真正在处理机上运行的是进程
D. 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的方法实现同步
23、
以下哪些属于数据库的事物特性?
A. 原子性
B. 隔离性
C. 一致性
D. 持久性
24、
Redis过期键的删除策略有哪些?
A. 定时删除、惰性删除、定期删除
B. 定时删除、定量删除、定期删除
C. 随机删除、惰性删除、定期删除
D. 定时删除、定量删除、随机删除
25、
以下哪种数据结构是Redis不支持的?
A. String
B. Hash
C. List
D. Map
26、
如何优化MySQL?
A. 设计数据库时:数据库表、字段的设计,存储引擎选择
B. 利用好MySQL自身提供的索引等功能
C. 利用MySQL集群、负载均衡、读写分离
D. SQL语句优化
27、
以下哪个选项不是Spring Cloud组件?
A. Eureka
B. Zuul
C. Dubbo
D. Feign
28、
Actuator在Spring Boot中的作用,说法正确的是?
A. 可以访问生产环境中的程序当前状态
B. 为Restful Web服务提供端点,用于检查不同度量指标
C. Actuator必须集成SpringCloud组件才能使用
D. 以上都是
29、
为什么选择微服务框架?
A. 微服务可以轻松适应其他框架技术
B. 单个进程失败不会影响整个系统
C. 为大企业和小团队提供支持
D. 可以在相对较短的时间内独立部署
30、
以下哪些是SpringCloud的核心特性?
A. 版本化、分布式配置
B. 服务注册与发现
C. 分布式消息传递
D. 以上都是
31、
过渡到微服务,常见的困难有?
A. 开发人员无法概述当前的挑战
B. 重写已经存在的程序
C. 职责、时间线、应用边界没有明确定义
D. 未能从一开始就实施和确定自动化的范围
32、
下面关于BeanFactory接口说法正确的是?
A. BeanFactory是单例模式的实现,负责创建和管理bean
B. BeanFactory是工厂模式的实现,负责创建和管理bean
C. ApplicationContext类是它的实现类
D. 以上说法都不正确
33、
在Servlet处理请求的方式为?
A. 以进程的方式
B. 以程序的方式
C. 以线程的方式
D. 以响应的方式
34、
关于SpringBoot,以下说法正确的是?
A. 使用嵌入式的servlet容器,应用无需打包成war包
B. starters自动依赖与版本控制
C. 准生产环境的运行应用监控
D. 以上都正确
35、
在服务器的网络编程中,解决会话跟踪的方法有?
A. 使用Cookie
B. 使用URL重写
C. 使用隐藏的表单域
D. 以上方法都不能单独使用
36、
下面是Spring依赖注入方式的是?
A. set方法注入
B. 构造方法注入
C. get方法注入
D. 接口注入
37、
关于Spring Bean 的生命周期和作用域,以下说法不正确的是?
A. Spring Bean 生命周期可以分为创建和销毁两个过程
B. Spring Bean 的销毁过程会依次调用 DisposableBean 的 destroy 方法和 Bean 自身定制的 destroy 方法
C. Spring Bean 有2种作用域,分别是Singleton和Prototype
D. Singleton,是 Spring 的默认作用域,也就是为每个 IOC 容器创建唯一的一个 Bean 实例
38、
List、Set、Map哪个继承自Collection接口,以下说法正确的是?
A. List、Map
B. Set、Map
C. List、Set
D. List、Map、Set
39、
Java提供了哪些IO方式?
A. BIO、NIO、AIO
B. SIO、NIO、AIO
C. BIO、SIO、AIO
D. FIO、NIO、AIO
40、
关于Java 内存模型中的 happen-before ,以下说法不正确的是?
A. Happen-before 关系,是 Java 内存模型中保证多线程操作可见性的机制
B. Happen-before 表现形式就是 synchronized、volatile、lock 操作顺序等方面
C. Happen-before 不仅仅是对执行时间的保证,也包括对内存读、写操作顺序的保证
D. 线程内执行的每个操作,都保证 happen-before 后面的操作
41、
下列哪些是GC的回收算法?
A. 标记清除算法
B. 标记整理算法
C. 复制算法
D. 分代收集算法
42、
以下关于String、StringBuffer和StringBuilder 的说法,不正确的是?
A. String声明为 final class,所有属性也都是 final 的
B. StringBuffer是线程安全的
C. String是典型的 Immutable 类
D. StringBuilder是线程安全的
43、
下列哪种异常是检查型异常,需要在编写时声明?
A. NullPointerException
B. ClassCastException
C. FileNotFoundException
D. IndexOutOfBoundsException
44、
在Java多线程中,下列哪种方式不会使线程进入阻塞状态?
A. sleep()
B. suspend()
C. wait()
D. yield()
45、
在JVM的内存结构中,下列哪些是线程私有的内存区域?
A. 程序计数器
B. Java虚拟机栈
C. 本地方法栈
D. 堆内存
46、
以下关于Hashtable、HashMap 和TreeMap 的说法,不正确的是?
A. 三者都是最常见的 Map 实现
B. Hashtable本身是同步的,不支持 null 键和值
C. HashMap 不是同步的,支持 null 键和值
D. TreeMap 则是基于红黑树的一种无序访问的 Map
47、
以下锁机制中,不能保证线程安全的是?
A. ReentrantLock
B. Synchronized
C. Volatile
D. Atomic
48、
以下关于Exception和Error的说法,不正确的是?
A. Exception 和 Error 都是继承了 Throwable 类整机组装
B. Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类
C. Exception 和 Error 都是可以预料、便于捕获的
D. Exception 又分为checked异常和unchecked异常

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>