嘉为python后端实习面经(深圳)
《面试题目》
- 简单介绍自己
- 简单介绍项目(python),自己的职责
- 这个项目中一次请求的完整链路
- async什么时候用,有没有专门优化
- 数据库查询变慢了,排查链路是什么
- 有没有用过压测工具测接口(什么名字忘记了)
- 调用llm接口失败的重试机制
- 调用第三方接口,如果没有响应,会不会继续扣费
- 项目最难忘的点是什么?
- (go项目)简单介绍项目
- 怎么做的缓存
- 怎么保证并发安全(其实想问sync.map)
- 怎么做的接口请求量优化
- (java项目)你做的jwt和springsecurity怎么结合?你做的filter作用是什么。
- 如何实现全局异常,机制
- 调用第三方接口失败怎么归并到全局异常
- 线上报500怎么排查
- 聊天部分有没有用websocket
八股文:
- 数组和链表区别
- 为什么数组可以快速查询
- 为什么哈希表可以O1查询
- 哈希表最坏为什么是On
- 哈希冲突怎么解决
- 进程和线程区别
- 线程共享什么资源
- 用户态和内核态区别
- 什么是僵尸进程和孤儿进程
- linux使用情况
- udp和tcp区别
- 项目有没有用websocket(同上面的java项目题)
- 有没有想反问的
- 公司业务
- 开发用的框架
- 公司平时是否vibe coding
- 考勤
- 面试官人很好,会提醒回答方向,太难的题也会跳过问别的方向。最后他说面试过程还不错,送我出了电梯口。公司效率挺高的,下午三点面到三点五十五,说下午会给出面试结果。希望能过。
《参考解析》
-
计算机网络:TCP(传输控制协议)是面向连接、可靠的传输协议,提供流量控制和拥塞控制;UDP(用户数据报协议)是无连接、不可靠但速度更快的协议。TCP通过三次握手建立连接(SYN→SYN+ACK→ACK),四次挥手断开(FIN→ACK→FIN→ACK)。
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
Spring框架:Spring IoC容器管理Bean生命周期,核心是依赖注入(DI)。AOP面向切面编程通过动态代理(JDK/CGLIB)实现横切关注点(日志/事务/权限)。Spring事务传播行为:REQUIRED(加入现有或新建)、REQUIRES_NEW(挂起当前,新建)、NESTED(嵌套事务)等。
-
Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。