java3-5年面试题——高级篇

2023-05-16

关于linux操作:

1.常用的文件操作命令

(1).ls命令:查看当前目录中的文件信息

ls -a         查看所有文件列表(可查看隐藏文件)
ls -l         以列表方式显示文件的详细信息
ls -h         配合-l以人性化的方式显示文件大小
ls -l -h      显示文件大小更加直观
ls -lh 
ls -hl
ls -lha 

(2).cd命令:切换工作路径

linux下文件和目录特点:
.     代表当前目录
..    代表上一级目录
 
cd        切换目录
cd ~      切换到当前用户的主目录(家目录~)
cd .      保持在当前目录不变
cd ..     切换到上级目录
cd -      可以在最近两次工作目录之间来回切换

(3).mkdir命令 :创建空白的目录

参数:
-p         可以递归递归创建出具有嵌套叠层关系的文件目录
 
mkdir 文件夹名           创建一个新的目录
例如:
mkdir -p a/b/c/d        递归创建多个目录

(4).clear命令:用于清屏
(5).rm命令:删除文件或目录
(6).vi(Visual interface)命令:如果文件已存在,会直接打开该文件;如果文件不存在,会新建一个文件

末行模式命令:
w        保存
q        退出
q!       强行退出,不保存退出
wq       保存并退出
x        保存并退出

(7).tar命令:对文件进行打包压缩或解压

参数:
-c     用于创建压缩文件
-x     用于解压文件
-t     查看压缩包内有哪些文件
-z     用Gzip压缩或解压
-j     用bzip压缩或解压
-v     显示压缩或解压的过程
-f     目标文件名,f后面一定是.tar文件,所以必须放选项最后
-p     保留原始的权限与属性
-P     使用绝对路径来压缩
-C     指定解压到的目录
-c和-x     参数不能同时使用
用户使用时则是根据文件的后缀来决定应使用何种格式参数进行解压。
tar -cvf 打包文件.tar 被打包的文件/路径(多个文件空格分开)           打包文件
tar -xvf 打包文件.tar                                             解包文件
gzip压缩
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...                     压缩文件
tar -zxvf 打包文件.tar.gz                                        解压缩文件
tar -zxvf 打包文件.tar.gz  -C 目标路径                           解压缩到指定路径
bzip2压缩
tar -jcvf 打包文件.tar.gz 被压缩的文件/路径...                    压缩文件
tar -jxvf 打包文件.tar.gz                                       解压缩文件
tar -jxvf 打包文件.tar.gz  -C 目标路径                           解压缩到指定路径

2.查看线程信息的命令

ps命令
查找指定线程

 ps -ef | grep mmp-front  //mmp-front是进程关键字

查看端口:

ps -aux | grep tomcat

查看进程

1、ps 命令用于查看当前正在运行的进程。
grep 是搜索
例如: ps -ef | grep java
表示查看所有进程里 CMD 是 java 的进程信息

2、ps -aux | grep java
-aux 显示所有状态

3. kill 命令用于终止进程
例如: kill -9 [PID]

3.项目部署命令

转:https://blog.csdn.net/m0_56915142/article/details/125414778

4.常用的数据结构

数据结构有:1.数组;2.栈;3.队列;4.链表(单链表、双向链表、循环链表);5.数;6.散列表;7.堆;8.图

5.hashmap是什么数据结构

链表散列:数组和链表的结合体

6.堆、栈、队列的特性是什么?

转:https://www.cnblogs.com/guoxiaoyan/p/8664150.html

7.树的应用场景是什么?

B-tree:B树作为索引存储结构的有mongodb,postgres,oracle,sqlserver
B+tree:mysql(innerdb)

1、AVL树: 最早的平衡二叉树之一。应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树。

2、红黑树: 平衡二叉树,广泛用在C++的STL中。如map和set都是用红黑树实现的。还有Linux文件管理。

3、B/B+树: 用在磁盘文件组织 数据索引和数据库索引。

4、Trie树(字典树): 用在统计和排序大量字符串,如自动机、M数据库索

8.二叉树与红黑树的理解

最多有 2 个孩子的树称为二叉树。由于二叉树中的每个元素只能有 2 个孩子,我们通常将它们命名为左孩子和右孩子。

红黑树是一种自平衡二叉搜索树,每个节点都有一个额外的位置用来存储节点的颜色(红色或黑色)。这些颜色用于确保树在插入和删除过程中保持平衡。虽然树的平衡性并不完美,但足以减少搜索时间并保持在 O(log n) 时间左右,其中 n 是树中元素的总数

9.分布式框架有哪些?

里巴巴的Dubbo,HSF,腾讯的Tars,京东的JSF,新浪的Motan

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

10.dubbo和spring cloud的比较

转:https://blog.csdn.net/xuri24/article/details/89283802

11.Restful风格的接口的理解

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件

主要由概括性的注解@RequestMapping,细分成了@DeleteMapping, @GetMapping, @PostMapping,@PatchMapping,@PutMapping等

12.rpc框架有哪些?如何使用?

Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。

Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。

Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。

Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言

具体使用
1.Dubbo 的架构主要包含四个角色,其中 Consumer 是服务消费者,Provider 是服务提供者,Registry 是注册中心,Monitor 是监控系统。
具体的交互流程是 Consumer 一端通过注册中心获取到 Provider 节点后,通过 Dubbo 的客户端 SDK 与 Provider 建立连接,并发起调用。Provider 一端通过 Dubbo 的服务端 SDK 接收到 Consumer 的请求,处理后再把结果返回给 Consumer

2.Motan 与 Dubbo 的架构类似,都需要在 Client 端(服务消费者)和 Server 端(服务提供者)引入 SDK,其中 Motan 框架主要包含下面几个功能模块。

register:用来和注册中心交互,包括注册服务、订阅服务、服务变更通知、服务心跳发送等功能。

protocol:用来进行 RPC 服务的描述和 RPC 服务的配置管理,这一层还可以添加不同功能的 filter 用来完成统计、并发限制等功能。

serialize:将 RPC 请求中的参数、结果等对象进行序列化与反序列化

transport:用来进行远程通信,默认使用 Netty NIO 的 TCP 长链接方式。

cluster:请求时会根据不同的高可用与负载均衡策略选择一个可用的 Server 发起远程调用。

3.Spring Cloud微服务架构是由多个组件一起组成的,各个组件的交互流程如下。

》请求统一通过 API 网关 Zuul 来访问内部服务,先经过 Token 进行安全认证。

》通过安全认证后,网关 Zuul 从注册中心 Eureka 获取可用服务节点列表。

》从可用服务节点中选取一个可用节点,然后把请求分发到这个节点。

》整个请求过程中,Hystrix 组件负责处理服务超时熔断,Turbine 组件负责监控服务间的调用和熔断相关指标,Sleuth 组件负责调用链监控,ELK 负责日志分析。

13.rpc和http的对比

http请求是使用具有标准语义的通用的接口定向到资源的,这些语义能够被中间组件和提供服务的来源机器进行解释。与之相比较,rpc的机制是根据语言的API来定义的,而不是根据基于网络的应用来定义的。
RPC——远程过程调用协议
HTTP——超文本传输协议

14.负载均衡的理解

负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。

负载均衡的主要作用如下:

高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。

伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。

高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。

安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等。

15.常用的mq的种类

ActiveMQ
比较古老的项目的维护,可能会应用到ActiveMQ。新的项目应用很少。单从ActiveMQ的性能上来说,笔者认为其和RabbitMQ是不分伯仲的。现在很少应用的原因笔者认为是其功能较为单一造成的。

RabbitMQ:
对于数据量不是特别大的业务场景,RabbitMQ是最为合适的选择。从功能方面说,RabbitMQ提供了程序员在MQ使用过程中各种需求的机制,功能还是比较丰富的。从使用成本上考虑,RabbitMQ相比于RocketMQ,Kafka对服务器的要求都比较低。所以对于大部分中小型企业来说,都选择了RabbitMQ作为了消息中间件。

Kafka:
如果单是从作为MQ来使用的话,选择Kafka作为MQ笔者认为这不是一个合理的选择。Kafka用于MQ使用的话,其功能性相对来说还是比较单一的。比如说,Kafka并没有提供类似于RabbitMQ中死信队列的机制,总体感觉就是Kafka在收发消息中只实现了基本的功能,没有为程序员提供各种需求的处理机制。
但是Kafka在大数据领域发挥出了特别的作用。其流处理功能等特性,被大数据广泛应用。所以笔者说单纯作为MQ使用的话,Kafka不是第一首选。但是Kafka涉及的生态比较多,所以在实际生产中,我们常常看见Kafka既作为了MQ在使用,又作为了数据治理的工具来使用。

RocketMQ:
上面说到单纯用于MQ使用,Kafka不是 第一选择,那么在大数据量的场景下使用MQ,应该如何选择呢?没错,使用RocketMQ。虽然RocketMQ的前身出自Kafka。但是在Kafka的基础上,衍生出了很多MQ独有的特性和功能。RocketMQ对于服务器的要求较高,成本较大,所以没有大数据量的业务场景下,还是不要为了装逼而选择RocketMQ了,比较老板心疼的是钱,而不是技术的逼格有多高。

EMQX:
EMQX相当于物联网领域的Kafka,支持大数据量业务场景。其实现了MQTT协议,并在此基础上扩展出很多MQ的特性和机制。对于单纯的java程序员来说,可能对EMQX并不熟悉,但是EMQX也可以作为一款高性能MQ,满足大多数的业务场景。

16.RabbitMQ的作用

RabbitMQ的常见作用有三种,分别是服务间解耦、实现异步通信、流量削峰。

应用场景一:用户订单,库存处理。【服务间解耦】

应用场景二:用户注册,发送手机短信,邮件。【实现异步通信】

应用场景三:商品秒杀和抢购。【流量削峰】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java3-5年面试题——高级篇 的相关文章

  • 面试:如果程序崩溃,可能的原因是什么?

    You are given the source to an application which crashes when it is run After running it ten times in a debugger you fin
  • Mac 安装 nodejs方法——新手教程

    访问nodejs官网 xff0c 点击蓝色选框区域稳定版 xff0c 并下载官网链接 我们这里选择了右面的12 8 1 current xff0c 点击下载 双击刚下载的文件 xff0c 按步骤默认安装就行 安装完成后打开终端 xff0c
  • module.exports用法

    module exports 对象是由模块系统创建的 在我们自己写模块的时候 xff0c 需要在模块最后写好模块接口 xff0c 声明这个模块对外暴露什么内容 xff0c module exports 提供了暴露接口的方法 转自博客 1 返
  • 八 关于电机驱动芯片L298N使用心得

    车模套件的选择 当时由于是第一次做某个东西 xff0c 所以购买车模的时候不是很有信心 xff0c 就买了一个比较廉价一点的 xff0c 事实证明一分价钱一分货 xff0c 组装的时候发现轮子有点松动 xff0c 这就意味着跑的时候 xff
  • 解决Ubuntu网络调试助手安装后无法打开问题

    通常很多初学者在学习和开发网络相关程序时 xff0c 基本上都会用到NetAssist这个网络调节助手 xff0c 该工具简洁实用 xff0c 对于初学网络编程的人员特别友好 xff0c windows系统下该调节助手在任何系统版本中都能正
  • IP地址与二进制的转换

    以192为例 以192 168 100 7为例 192的二进制为11000000 168的二进制为10101000 100的二进制为01100100 7的二进制为00000111 192 168 100 7的二进制为11000000 101
  • 根据子网掩码求最大主机数(面试被问过)

    如子网掩码255 255 240 0 化成二进制11111111 11111111 11110000 00000000 子网号中里面的1代表网络号 xff0c 0代表主机号 xff0c 有12个0 xff0c 即最大主机数为2的12次方 又
  • 麒麟系统安装bin类型文件

    在终端 xff08 windows的cmd xff09 运作命令修改文件属性 xff0c 使其可以被执行 chmod a 43 x file bin 运行 sudo file bin
  • 深度和追踪最好use the D415 and the T265 in parallel.

    All SLAM solutions and there are many good ones are limited by the information they receive It is possible to run host b
  • 树莓派上编译安装realsense经验

    1 树莓派系统一定要用realsense官方指定的ubuntu mate xff0c 树莓派B3 43 只能装18 0 4 xff0c 树莓派B3和以前的只能装16 0 4 2 不要妄想装realsense的非编译版本 xff08 官网说打
  • 树莓派安装realsense自己的步骤梳理

    树莓派3B 43 装上ubuntu 18 0 4的内核亲测是 4 15的 xff0c 跟ubuntu官网一致 目前最新的也就是4 15 xff0c 不知道realsense官网瞎扯什么4 16啥的干啥 xff1f 都还没有的东西 xff0c
  • Opencv快速入门(C++版)

    Opencv快速入门 C 43 43 版 Excerpt Opencv快速入门 C 43 43 版 xff09 前言1 图像的读取与显示所使用的API接口 xff1a 代码演示 xff1a 2 图像色彩空间转换所使用的API接口 xff1a
  • 搭建elsticsearch集群遇到的错误

    错误一 xff1a 报错with the same id but is a different node instance解决办法 原因 xff1a 是因为复制虚拟机时 xff0c elsticsearch时 xff0c 将elsticse
  • PX4无人机控制

    1 PX4安装 安装主要是配置环境 xff0c 我是按照官网配置的 xff1a PX4 自动驾驶用户指南 特别是对于英语不好的我来讲 xff0c 配置了好几天也没有配置成功 找到了比较靠谱的参考文献 xff1a Ubuntu18 04配置搭
  • 吃透计算机组成原理

    文章目录 博主杂谈计算机概论计算机发展历程计算机的分类计算机的结构体系冯诺依曼体系现代计算机体系 计算机的层次与编程语言程序翻译与程序解释计算机层次 计算机计算单位与字符编码计算机计算单位计算机字符编码字符编码种类与历程 计算机内部结构计算
  • 远程显示docker运行结果

    查找本地IP 服务器中的docker环境操作步骤 xff1a span class token function export span DISPLAY span class token operator 61 span 10 100 12
  • 笔试——Linux操作系统

    1 Linux内核的组成部分 Linux内核主要由五个子系统组成 xff1a 进程调度 内存管理 虚拟文件系统 网络接口 进程间通信 xff1b 2 Linux系统的组成部分 主要是4个部分 xff1a 内核 shell 文件系统和应用程序
  • WIN11打开照片 浏览器 office等软件启用硬件加速后总黑屏

    解决 WIN11打开照片 浏览器 office等软件启用硬件加速后总黑屏 问题描述 xff1a 电脑为暗影精灵6 xff08 OMEN 6 xff0c 在更新intel显卡驱动程序后或者更新win11后 xff08 自动更新最新驱动 xff
  • linux执行程序运行命令失败,提示找不到命令

    安装虚拟机时提示找不到命令 sudo VMware Workstation Full 17 0 0 20800274 x86 64 bundle xff1a 找不到命令 经检查 xff0c sudo命令正常 xff0c 该脚本文件的确存在于
  • 用自己的设备(realsense d435i)跑VINS-Fusion 还是有一些坑

    操作环境 设备 xff1a MacBook pro 2019 xff0c realsense d435i 系统 xff1a Ubuntu 16 04 lts 准备工作 标定 首先标定摄像头 xff0c 这里用kalibr对摄像头和imu进行

随机推荐