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.