航旅纵横实习生面试面经
《面试题目》
- RAG架构是什么,如何提高检索效率,后端主要做了什么,做项目中有什么困难?
- 分块策略都有什么,该如何设计?
- JWT是什么?如何实现?有什么优点与缺点?
- 跨域原理是什么?
- 如何在高并发场景下保持选座的一致性?数据库该如何设计?线上最多能够容纳多少人同时在线选座?
- 调用高德地图API时候有什么困难,是如何实现坐标信息的转换,使用的是什么算法?
- 文件上传用了什么,除了在数据库中保存url,还可以使用什么方法?
- Nginx是什么?有什么优点与缺点?
- Java的数据类型都有什么?抽象类是什么?抽象类中可不可以没有方法?
- HashMap的底层原理是什么?ArrayList与LinkedList有什么区别?分别适用的场景是什么?
- I/O都有哪几种方法?
- 多线程是如何使用?请说出两种方法?
- 多线程访问静态变量会不会出问题?该如何解决?
- SQL如何保持数据的一致性?
- Redis如何解决数据不一致的情况?
- 在浏览器访问域名时候,使用了哪几种协议?分别属于什么层?
- 结尾提问:如果有幸应聘上,还需要掌握什么技能?(面试官答:微服务等)
《参考解析》
- RAG与检索优化:RAG通过检索增强生成减少大模型幻觉。优化可从Embedding模型质量、分块策略(如语义分块)、倒排索引结合向量索引(Hybrid Search)入手。
- 高并发选座一致性:核心是库存扣减与锁机制。使用Redis分布式锁(Redisson)预扣库存,数据库层面配合行锁或乐观锁(版本号/CAS),避免超卖。
- JWT:由Header、Payload、Signature组成。优点是无状态扩展性好;缺点是注销难、Payload信息明文泄露(除非加密)。
- HashMap底层:JDK1.8后采用数组+链表+红黑树,链表长度超过8且数组长度超64转为红黑树。关键在于负载因子0.75与扩容机制。
- Redis数据一致性:推荐采用“先更新数据库,再删除缓存”的策略,配合延迟双删或订阅Binlog(如Canal)异步更新缓存以降低不一致概率。