#科大讯飞# 主要针对项目问(做的苍穹外卖)
1.redis在项目中怎么应用的?缓存了什么
2.说说对jwt的了解,往细一点说
3.优惠券库存超卖的问题是怎么实现的?如果两个人同时去抢这个优惠券怎么办?(加锁,锁粒度为优惠券的标识)
4.如果用户下单,在规定的时间内没有支付,对于这种失效情况要怎么做?(mq延时消息,加个定时mq)
5.对数据结构了解的怎么样?
6.最近刷题有遇到哪一题印象比较深的吗?有哪些比较熟悉的算法?介绍一下
7.项目中有用到设计模式吗?
8.Java的juc包下的工具类有使用过吗?有看过源码吗?平常有阅读源码的习惯吗?
9.concurrentHashmap有了解过吗?
10.Hashmap底层数据结构长什么?什么时候转变成红黑树?
11.hashmap和hashtable有什么区别?
12.怎么理解阻塞和非阻塞的概念?(线程阻塞需要等待一个结果,这个结果可能是由某个线程来notify,也可能是某个方法的一个返回值,非阻塞指线程调用某个方法,不关心这个方法的结果,继续往下执行)
13.项目中用到了异步的方法吗?有了解过吗?
14.Java中怎么创建一个线程?你更推荐哪一种?(实现Runnable接口,因为Java有单继承的限制,一个类继承于一个父类,不能有一些额外的扩展性。假如有一些业务代码,可以新建一个类实现runnable接口,这个类直接用于对这个业务的封装,后面也可以做一些新的小方法。runnable的方式不仅可以在new thread里用,在很多方法中可以传入一个rannable对象去唤醒一个新的线程去执行)
15.mybatis和mybatisPlus的区别?
面试官建议:开发这种岗位还是需要多动手多做。只有到业务场景中才能去了解到解决了什么问题,为什么要这么做。一定要多做项目,去练去想,做项目时先根据需求设计自己写一写,然后对比别人的代码,看有什么不足,或者自己有什么更好的点子。多写多练多沉淀多思考,让这些成为伴随你以后的经验,当你遇到某个需求时你就知道要怎么做,为什么。
面试官人真的很不错,说不上来的也会细心解答,学到了很多。