关于面试的准备

barry-blog / 2024-03-10 / 原文

2024年3月10日

关于简历、

1.数据分发服务内部的统一分发模型采用了协程池、异步队列的方式实现对批量数据砍单后的单笔推单过程,提高了接口的处理能力,提高了系统的高可用和高性能;

2.数据入库时的数据库表设计。对于上游数据需要我们中台服务自己存储一份,需要设计合适的表来存储,根据一对一或一对多等关系建立合适的表,并对一些场景采用软删的方式来存储记录;

3.使用mokito进行单元测试,提升代码覆盖率,对部分代码进行重构;

4.熟练掌握git的日常开发使用

5.熟练基于Java8特性

6.登录注册:使用Redis实现验证码,token的存储,用自定义拦截器完成用户认证、并使用双重拦截器解决token刷新的问题;

7.缓存一致性问题:深入了解缓存一致性问题的常用解决方案,并在系统中采用主动更新+超时剔除的缓存更新方案,满足较高的教据一致性需求;

8.接口调试:使用HttpPostGet{}工具类实现对HTTP不同方法的请求,最后将请求结果封装成JsonResult对象返回;

9.邮件通知:调用spring框架中的JavaMailSender组件实现对项目成员的邮件发送,当接口处于不同状态时发送邮件通知相关的项目成员进行处理;

10.用户权限的保存:通过Threadlocal配合拦截器来进行token的校验,判断当前用户是否处于登录状态,并解决了HTTP无状态的问题,达到服务器记住用户信息的效果;

11.熟练掌握Java基础,熟悉常用集合及底层数据结构、反射、类加载、 (了解)多线程;

12.熟练掌握JVM内存结构、JMM、GC算法、双亲委派机制、G1工作原理和对类加载过程深刻理解;

13.熟练掌握MySQL,深刻理解事物及其原理、存储引擎、索引、锁机制和各种机制等;

14.熟练掌握Redis,深刻理解数据类型、持久化策略、IO模型、哨兵机制、高可用、高性能原理等;

15.熟悉并发编程,熟悉掌握Java中各种锁机制、CAS、AQS、线程池、Threadloacl、JUC中常用工具类等实现原理;

16.熟练使用SSM、SpringBoot、SpringCloud等架深刻理解loC、AOP、Bean 生命周期、循环依赖、自动配置原理等;

17.对部分设计模式和设计原则有深入的理解,例如单例、工厂模板方法、策略、责任链模式等;

一些准备的问题

数据库

基础CRUD

1. 增

1. create user  atguigu@'%'  identified by '123456'; #创建用户
2. create database web; #创建数据库
3. create table a1(id int,name char(30)); #创建表 要加上字段名和数据类型
4. insert into a2(id,name,age) values(1,'zhangsan',21); #插入数据

2. 删

1. drop user atguigu@'%'; #删除用户
2. drop database web;  #删除数据库
3. drop table a1;  #删除数据库表
4. delete from a1 where id=5;

3. 改

1. update a1 set age=21 where id=3; #修改表中数据  年龄
2. alter table a1 rename a2;  #修改表的名称
3. alter table a1 modify name char(50) #修改表的字段类型
4. alter table a1 change name username char(50) not null default '';  #综合体 change  修改的是字段名和类型  属于修改数据
5. alter table a1 add time datetime;
6. alter table a1 drop time;  #添加和删除已有字段

4. 查

1. show databases; #查看所有数据库
2. show tables; #查看指定库内所有表
3. describe a1;  #查看表中的字段结构
4. select user,password,host from mysql.user;  #查看用户密码及登陆方式

5. 授权指令和取消授权

1. grant all on aa.a1 to atguigu@'%';  #授权给已有用户
2. grant all on aa.a1 to abc@'%' identified by '123456'; #创建用户并授权
3. revoke delete,drop on aa.a1 from abc@'%';      #取消授权
4. show grants for abc@'%';      #查看用户的权限

6. 启动和关闭

1. mysqld_safe &  #启动数据库
2. mysqladmin -uroot -p123456 shutdown  #关闭数据库

MySQL的常用函数总结

https://blog.csdn.net/zeng_ll/article/details/87706409

面试题

1. 返回姓李同学的个数  count(*) 返回指定匹配条件的行数

  • select count(*) from student.report where Name like '李%' ;

2. 返回表中成绩大于80的前两名同学的名字,并按分数从大到小的顺序排列

  • select result from report order by result desc limit 2;  #order by 是指排序 desc是指降序 进行组合 limit 2 指取前两行