面试题总结3
先做一个自我介绍
面试官您好,我叫XXX,我是25界软件工程的一个应届毕业生,在校期间自学了一套Java的常用开发技术栈,包括Java基础、集合、spring、springboot、并发变编程JUC、虚拟机JVM、关系型数据库MySQ、非关系型数据库redis、以及消息队列中间件rabbitMQ、rocketMQ、这些都有学习,这大概就是我的一些情况了。
常见的集合有哪些
常见的集合的话,可以分为单例集合Collection和双列集合Map单列集合有又可分为set、list、队列queue。往里细分set又可以分为TreeSet、hashset、linkedHashset,list可以分为arraylist、vector、linkedlist,queue可以分为ArrayDeque、LinkedList、priorityQueue。Map可以分为TreeMap、HashMap、LinkedHashMap。
Map 的 key 可以为 null 吗
在 HashMap 中,允许 key 为 null,原因是 HashMap 对 null 键做了特殊处理,将他的哈希值固定为 0.
final 关键字的作用
final 是常量修饰符,如果修饰变量的话:这个变量就会编变成常量,也就是说他的值不能被修改。如果修饰方法的话:那么这个方法是不能被子类进行重写的。如果修饰类的话:这个类是不能被继承的。
抽象类和接口有什么区别
抽象类可以有构造方法、任意类型的成员变量、普通方法、可以没有抽象方法。
接口没有构造方法、只有 public static final 的成员变量、1.8 以前只能有抽象方法,1.8 有默认方法,9 有普通方法。
抽象类和接口的本质就是属性和行为,我们说为什么会有接口,有一个哲学思想就是鸭子类型,当看到一直鸟 走起来像鸭子、游泳方式也像鸭子、叫声也像鸭子,那么这只鸟就可以被称为鸭子。在鸭子类型中重点关注的是对象的行为能做什么,而不是关注对象的属性。所以我们说实现了实现了某些方法,具有某些特征就可以称之为实现了接口,但我们发现鸭子和鸟的嘴巴、体型都不一致,或者说属性不一样,所以是一个抽象类。
抽象类的方法可以用 final 修饰吗
抽象类可以有抽象方法和普通方法,final 修饰的方法是不能被子类重写的,也就是说 final 方法他自己要有方法体,抽象方法没有方法体所以不能被 final 修饰,但是普通方法是有方法体的,也就是说使用 final 修饰的时候,这个方法不能被子类重写,但是可以正常调用的,所以普通方法可以用 final 修饰
说一下 SpringBoot 里常见的注解有哪些
从启动类开始:SpringBootApplication、controller、RestController、mapping、Restmapping、service、value、EnableAutoConfiguration、Configuration、Bean、Lazy、Aspect、pointcut、around、before、after、finally、@Transactional
、autowired、resource
接收参数有哪些注解
参数传递@RequestParam、JSON 数据传递参数 @RequestBody、日期类型 @DateTimeFormat、路径参数@PathVariable
实现一个用户登陆、用户注册、用户推出的 Demo
用户注册:先判断注册的用户名是否存在,然后使用分布式锁 防止高并发 ,注册成功后将用户信息插入数据库,最后将用户名添加到布隆过滤器。
用户登陆:首先根据用户输入的用户名、密码、如果有删除标识的话也要加上,去数据库查找是否存在这样的一条记录,如果不存在,那么就返回用户不存在。如果查找成功,再去查看 token,token 如果存在则更新他的过期时间,如果 token 不存在,那么就是说用户是首次登陆,就使用 uuid 创建一个 token 返回这个 token 即可
用户注销:首先检查用户登陆的缓存信息,将缓存中的 token 删除掉,即可
JWT 是什么
JWT 可以用于生成 token,通常是用 Base64 编码。
说一下 mysql 的 Inner join 有什么效果
内连接的主要作用连接两个或多个表,返回只满足连接条件的行,不满足的记录不会出现在结果集中。相当于集合中的交集。
索引有什么作用
索引就相当于书的一个目录,可以根据索引来快速的找到符合条件的记录,主要作用就是增大查询效率。本质就是使用 B+树的数据结构,可以在很短的时间内返回结果
创建索引的 sql 怎么写
CREATE INDEX 索引名 ON 表名 (列名);
介绍一下项目
打印九九乘法表
首先考虑暴力做法,用两层的嵌套循环,最外层的遍历条件是 i=1;i<10;i++第二层的遍历条件是 j=1;j<=i;j++,第二层遍历完后,打印一个换行。整体流程就是这样。
反问:1️⃣对我的建议2️⃣具体业务3️⃣面试结果反馈
建议:基础还要打牢,表达能力也要稍微组织一下。