Skip to content

正保远程教育 已完结 ​

日期

2024 年 9 月 5 日

自我介绍 ​

面试官您好,我是 wmh,是软件工程专业的 25 届应届生。

我的主要技术栈是 Spring Boot、MySQL、Redis。也会使用前端框架 Vue3,有一定的运维经验。

在校参与过学校项目组工作,有在校团队项目经验。参与过需求分析、数据库设计、开发、测试、部署等项目全流程。

在校期间完成了定时微服务、在线判题平台、个人导航站等项目,也与项目组成员合作开发过学校实验室预约系统、低代码平台组件库设计、学校申硕平台的二次开发等。

在校期间多次参与竞赛,曾获蓝桥杯省一和 CCPC 河北省赛的铜奖。

项目 ​

对哪个项目印象比较深刻或者了解比较多?简述一下这个项目 ​

印象比较深的是 OJ 在线判题平台这个项目。因为我在大一大二参加过很多算法类的竞赛,然后算法竞赛要求使用的就是这个在线判题平台,类似力扣那种输入代码,它能给你在线判题的平台。

我一直很好奇就是它到底是怎么实现的。我们然后通过从网上去调研一些解决方案,还有学习了一些开源项目获取思路,完成了这个项目。

你在里边做了什么? ​

主要是项目设计,还有这个后端的开发。前端是我和另一位同学一起做的。

Java 基础 ​

Java 集合中常用的都有哪些? ​

ArrayList、HashSet、HashMap

JUC ​

多线程有几种实现方法? ​

  1. 继承 Thread 类,重写 run() 方法
  2. 实现 Runnable 接口,重写 run() 方法
  3. 实现 Callable 接口,重写 call() 方法

wait() 和 sleep() 有什么区别? ​

两者都可以暂停线程的运行

  1. 所属类:wait() 是 Object 类方法,sleep() 是 Thread 类方法
  2. 是否释放锁:wait() 释放锁,sleep() 不释放锁
  3. 用途:wait() 用于线程间交互/通信,sleep() 用于暂停执行
  4. 苏醒时间:wait() 调用后,线程不会自动苏醒,需要别的线程调用同一个对象的 notify() 或者 notifyAll();sleep() 执行完成后,线程会自动苏醒。

计算机网络 ​

HTTP 中 get 和 post 的区别? ​

  1. 语义不同:get 指请求,post 指提交
  2. 请求参数:get 通常拼接在请求路径中,post 会携带请求体
  1. Cookie 存在客户端的,Session 存在服务端
  2. Cookie 可能被篡改,Session 安全性较高

Session 更适合作为登录凭证。

在前后端分离架构中,使用 Token 会更方便。前端框架实现可以在请求头中添加 Token,且避免了 Session 跨域错误。

HTTP 和 HTTPS 的区别 ​

  1. HTTP 使用 80 端口,HTTPS 使用 443 端口
  2. HTTPS 使用 SSL 加密传输
  3. HTTPS 需要验证服务器的数字证书

SSM 框架 ​

简述一下 SpringMVC 的调用流程 ​

  1. 用户发送请求到达前端控制器
  2. 前端控制器调用处理器映射器,处理器映射器返回请求地址对应的处理器执行链
  3. 前端控制器调用处理器适配器,处理器适配器处理参数和返回值,调用指定的 Controller

为什么使用 Spring Boot? ​

Spring Boot 类似于脚手架,简化了 Spring 框架的配置、搭建和开发。

Spring Boot 的核心注解是什么? ​

@SpringBootApplication

Redis ​

Redis 的使用场景 ​

  1. 作为 MySQL 的缓存
  2. 分布式登录
  3. 分布式锁

Redis 的基本数据类型 ​

String、Hash、Set、ZSet、List

MySQL ​

如何优化慢查询 ​

建立索引

索引的建立原则 ​

  1. 常用于查询的列
  2. 列中数据差异较大,且非空数据较少

Linux ​

给文件修改权限 ​

shell
chmod 777 a.txt

查看所有进程 ​

  1. ps
  2. top

Released under the MIT License.