23.8月可能 七牛云测开实习一面凉经
1. 自我介绍
2. 为什么想做测试
3. 实习经历
4. HashMap底层实现(1.7和1.8的区别)
Java 大厂面试 —— 常见集合篇 List HashMap 红黑树_java list是连续内存吗-CSDN博客
5. 创建线程的方式
23Java面试专题 八股文面试全套真题(含大厂高频面试真题)多线程_linux系统编程多线程编程网络io编程八股文面经-CSDN博客
继承Thread类、实现runnable接口、实现Callable接口、线程池创建线程(项目中常用)
6. 讲一讲消息队列
RabbitMQ入门到实战教程,MQ消息中间件,消息队列实战_rabbittemplate 获取消息-CSDN博客
7. 并发流程 怎样确保同一份数据不被重复消费 如何保证一个订单只会被分配给一个人
RabbitMQ高级篇 发送者、MQ、消费者的可靠性_mq发送者-CSDN博客
8. 分析慢SQL 优化SQL
23Java面试专题 八股文面试全套真题(含大厂高频面试真题)Redis、数据库、spring、集合、树_java23年八股文-CSDN博客
9. 两张表 学生表 专业表 查询一个专业对应多少学生个数
SELECT majors.专业名称, COUNT(students.学生ID) AS 学生个数
FROM students
JOIN majors ON students.专业ID = majors.专业ID
WHERE majors.专业名称 = '某个专业名称'
GROUP BY majors.专业名称;
10. Linux程序如何隐式启动
-
- 启动脚本(init.d 或 systemd):可以创建一个启动脚本并将其放置在
/etc/init.d/
或/etc/systemd/system/
目录中。这样,系统启动时会自动运行该脚本,并隐式启动相应的程序。 - cron 作业:可以使用 crontab 创建一个定时作业,指定程序在特定时间或间隔内运行。使用
crontab -e
命令编辑 crontab 文件,并添加适当的命令来启动程序。 - 用户登录脚本:可以将程序的启动命令添加到用户的登录脚本(如
.bashrc
)中。这样,在用户登录时会自动执行该脚本,并隐式启动程序。 - 进程守护(daemon):可以将程序设计为守护进程,守护进程会在系统启动时自动运行,并在后台持续运行。你可以使用编程语言(如C/C++)创建一个守护进程程序,或者使用现有的守护进程管理工具(如 supervisord)。
- 自定义服务单元:对于使用 systemd 的系统,可以创建一个自定义的服务单元文件(
.service
),并将其放置在/etc/systemd/system/
目录中。然后使用systemctl
命令启动、停止或管理该服务。
- 启动脚本(init.d 或 systemd):可以创建一个启动脚本并将其放置在
11. Linux查看系统资源使用情况
Linux系统可以使用多种命令来查看系统资源的使用情况,以下是几个常用的命令:
-
top
命令:实时显示系统的进程信息和资源占用情况。ps
命令:列出系统中运行的进程信息。free
命令:显示系统内存的使用情况。df
命令:显示磁盘的使用情况。iostat
命令:显示磁盘、CPU以及其他设备的输入/输出情况。
12. Linux移动文件夹操作指令,如何查看error错误
在Linux中,可以使用 mv
命令来移动文件夹。该命令的语法如下:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
其中,SOURCE
表示要被移动的文件或文件夹,DEST
或 DIRECTORY
表示目标位置。如果目标位置已经存在同名文件或文件夹,那么会覆盖该文件或文件夹。
要查看错误日志,可以使用以下命令来查看最近的错误信息:
dmesg | tail
13. Selenium常用定位元素的方法,嵌套的如何定位
-
- 根据ID定位:使用
find_element_by_id()
方法,例如driver.find_element_by_id("username")
。 - 根据name属性定位:使用
find_element_by_name()
方法。 - 根据class名称定位:使用
find_element_by_class_name()
方法。 - 根据标签名定位:使用
find_element_by_tag_name()
方法。 - 根据链接文字定位:使用
find_element_by_link_text()
方法。 - 根据部分链接文字定位:使用
find_element_by_partial_link_text()
方法。 - 根据XPath 定位:使用
find_element_by_xpath()
方法。 - 根据CSS选择器定位:使用
find_element_by_css_selector()
方法。
- 根据ID定位:使用
对于嵌套的元素,可以使用相对定位或绝对定位来找到该元素。相对定位是根据父元素或兄弟元素来定位子元素;绝对定位则是根据页面的整体结构来定位元素。
14. 使用Junit主要用来做什么
JUnit是Java中的一个单元测试框架,它可以帮助开发者编写和运行测试用例,并生成测试报告。JUnit主要用来检测单元测试是否通过或失败,以确保代码的正确性。
JUnit提供了一些注解(Annotation)和断言(Assertion)等工具,使得编写和运行测试用例变得非常方便。开发者可以通过JUnit来测试Java类、方法、代码片段等,以确保它们的功能和预期结果是正确的。
15. 如果要使用fiddler抓包的话 在手机端怎么实现
要在手机上使用 Fiddler 抓包,需要先将手机设置为使用 Fiddler 代理。具体步骤如下:
-
- 在 PC 上安装 Fiddler,并启动 Fiddler。
- 手机连接到与 PC 相同的 Wi-Fi 网络。
- 手机设置代理:在 Android 手机中,打开 Wi-Fi 设置,长按要连接的 Wi-Fi 网络,选择“修改网络”,然后选择“高级选项”,找到“代理”选项,将其设置为“手动”模式,输入 PC 的 IP 地址和 Fiddler 的监听端口(默认为8888)。
- 在手机上打开浏览器或应用程序,访问网站或进行网络操作。
- 在 Fiddler 的会话列表中,可以看到手机发送和接收的网络请求和响应,从而进行分析和调试。
16. 讲解项目
17. 简述对websocket的了解,具体有什么优点,和长轮询有什么区别
WebSocket 是一种基于 TCP 协议的全双工通信协议,在客户端和服务器之间建立一个持久化的连接,实现双向实时通信。与 HTTP 协议相比,WebSocket 的优点包括:
-
- 实时性更高:WebSocket 建立的是持久连接,可以实时地推送数据,而不需要像 HTTP 请求那样每次都要重新建立连接。
- 双向通信:WebSocket 支持客户端和服务器之间的双向通信,客户端可以主动发送消息给服务器,服务器也可以主动向客户端推送消息。
- 更少的网络流量:WebSocket 的请求头比 HTTP 短,只有几个字节,因此可以减少网络流量。
长轮询是一种模拟实时通信的技术,它的原理是客户端定时向服务器发送请求,服务器在收到请求后,如果有新数据就立即返回,否则就一直等待直到超时。与 WebSocket 相比,长轮询的缺点是需要频繁地发送请求,增加了网络流量和服务器负担。
18. websocket里是怎么处理数据的 四个事件
WebSocket 处理数据有四个主要事件:
-
- onopen 事件:建立连接后触发,可以在该事件中发送握手信息或者心跳包等。
- onmessage 事件:接收到消息时触发,可以在该事件中处理收到的数据。
- onerror 事件:出现错误时触发,可以在该事件中处理错误信息。
- onclose 事件:连接关闭时触发,可以在该事件中进行资源释放等操作。
19. websocket做一个负载均衡,使用Java做websocket怎么做
在 Java 中实现 WebSocket 负载均衡可以使用 Nginx 或者 Apache 等 Web 服务器来实现。具体步骤如下:
-
- 安装并配置 Nginx 或 Apache 作为反向代理服务器。
- 在反向代理服务器上配置 WebSocket 模块或插件,以支持 WebSocket 连接。
- 将请求转发到后端的多个 WebSocket 服务器,例如使用 Round-Robin 负载均衡算法等。
在 Java 中实现 WebSocket 服务器可以使用 Java EE 7 或者 Spring 框架等来实现。具体步骤如下:
-
- 使用 Java EE 7 中的 WebSocket API 或者 Spring 框架中的 WebSocket 模块来实现 WebSocket 服务器。
- 部署多个 WebSocket 服务器,并使用负载均衡技术来均衡分配请求。
- 使用集群技术来保证 WebSocket 服务器的高可用性,例如使用 ZooKeeper 来实现服务发现和负载均衡等。
20. 加密这块了解多少
21. 使用过Git吗,有没有遇到过Git冲突的时候
22. 如果遇到网络异常怎么保证消息的完整性 不被丢失
-
- 重试机制:在网络连接断开或者出现异常时,可以重新发送消息,直到消息被正确地发送并接收到回复。
- 心跳机制:定期发送心跳包以保持连接状态,并检测网络连接是否正常,如果异常则进行重连。
- 消息队列:将消息存储到消息队列中,等待网络连接恢复后再进行发送。
- 数据备份:将数据备份到不同的服务器或存储设备中,以防止数据丢失
23. DNS是做什么的 DNS解析过程(问的比较底层,要我说底层递归过程,顶级,一级,二级域名DNS)
-
- DNS(Domain Name System)是一种分布式的域名解析系统,它将域名映射为 IP 地址。DNS 解析过程主要包括以下步骤:
- 客户端向本地 DNS 服务器请求解析域名,如果本地 DNS 服务器缓存了该域名对应的 IP 地址,则直接返回结果,否则进行下一步。
- 本地 DNS 服务器向根 DNS 服务器发出请求,询问该域名所属的顶级域名服务器的 IP 地址。
- 根 DNS 服务器返回顶级域名服务器的 IP 地址,本地 DNS 服务器再向顶级域名服务器发出请求,询问该域名所属的二级域名服务器的 IP 地址。
- 顶级域名服务器返回二级域名服务器的 IP 地址,本地 DNS 服务器再向二级域名服务器发出请求,询问该域名对应的 IP 地址。
- 二级域名服务器返回该域名对应的 IP 地址,本地 DNS 服务器将结果缓存起来并返回给客户端。
在这个过程中,DNS 服务器之间会进行递归查询或迭代查询,以查找到最终的 IP 地址,并将结果返回给客户端。
24. 手撕快排,二叉树的反转
25. 最近在做什么项目
26. 反问
作者:余超颖