👉 项目官网:https://www.python-office.com/ 👈
👉 本开源项目的交流群 👈
大家好,这里是程序员晚枫。
今年1月来到法务部,体验券用完了,该回到代码开发岗位了。
好在重庆虽然没有什么互联网公司,但是车企不少,毕业以后在车辆检测行业、航空行业和车企研发岗位的Python、Java、C++、Vue开发经验还是很容易过简历,所以陆续收到了一些面试。
最近遇到了几个Python开发的岗位,工作之余准备了一下,又让我找到了钻研技术的乐趣。
今天我把sls面试的问题都拆成“面试官想听什么 + 你应该怎么答 + 一句话记忆口诀”。背口诀、背代码,都能做到张口就来。
1. 闭包(Closure)
面试官想听
- 定义:函数内部再定义函数,内部函数引用了外部函数的局部变量,并且被返回或被外部引用,形成“变量背包”。
- 经典坑:循环里创建闭包,变量引用的是最终值。
- 应用:装饰器、延迟计算、数据隐藏。
你的回答模板
1 | def make_power(n): |
口诀:外函套内函,内函用外变,外函把内返,闭包就生成。
2. __slots__
控制实例变量个数
面试官想听
- 默认:每个实例自带
__dict__
,可随意增删属性→浪费内存。 __slots__
指定“白名单”属性 → 不再生成__dict__
,省内存,防拼写错。- 限制:子类也要再声明;无法动态加新属性;与多重继承小心冲突。
你的回答模板
1 | class Point: |
口诀:slots 白名单,dict 说再见,内存省一半,属性不乱添。
3. Flask 用户验证(最简可跑代码)
面试官想听
- 扩展:
Flask-Login
、Flask-HTTPAuth
、JWT。 - 流程:登录 → 验证 → 写 session/cookie → 请求钩子或装饰器鉴权。
你的回答模板(Flask-Login 极简 demo)
1 | from flask import Flask, request, jsonify |
口诀:login_user 把用户塞进 session,login_required 把请求挡在门外。
4. RESTful 登录逻辑设计
面试官想听
- 资源:把“会话”抽象成资源
/sessions
,登录即 POST /sessions,注销即 **DELETE /sessions/{id}**。 - 无状态:服务器不保存会话,用 JWT 或 OAuth2。
- 状态码:201 Created(登录成功)、401 Unauthorized(凭据错)。
你的回答模板(伪路由表)
1 | POST /sessions → 登录 |
口诀:登录不是动词,是资源的新增;令牌就是门票,服务器不记名。
5. MySQL 事务 vs Redis 事务
维度 | MySQL InnoDB | Redis (MULTI/EXEC) |
---|---|---|
ACID | 完全支持,持久化、隔离级别 | 仅原子性 + 隔离性,不保证持久性 |
回滚 | 支持 ROLLBACK |
语法错误才放弃事务,运行期错误继续 |
锁粒度 | 行锁/间隙锁 | 单线程顺序执行,乐观锁(WATCH) |
典型命令 | BEGIN; COMMIT; ROLLBACK; |
MULTI; … ; EXEC/DISCARD |
口诀:MySQL 是银行级,Redis 是高速缓存级;MySQL 能回滚,Redis 只能“语法弃”。 |
6. Docker ENTRYPOINT vs CMD
维度 | ENTRYPOINT | CMD |
---|---|---|
作用 | 定义“可执行主体” | 定义“默认参数”或“默认命令” |
覆盖方式 | docker run --entrypoint |
docker run 镜像 新命令 |
组合关系 | ENTRYPOINT + CMD = 默认命令行 |
若用户传参,CMD 被替换 |
Shell/Exec | 两者都支持两种格式 | 同上 |
一句话记忆
ENTRYPOINT 是“主厨”,CMD 是“配菜”;用户想换菜谱,换掉配菜就行,换主厨得加 --entrypoint
。
30 秒回顾口诀
- 闭包:外返内,内用外。
- slots:白名单,省内存。
- Flask:login_user + login_required。
- RESTful:登录 = 新建 session。
- 事务:MySQL 能回滚,Redis 只能语法弃。
- Docker:ENTRYPOINT 主厨,CMD 配菜。
背完这 6 句,面试官点头,你拿 offer。
另外,大家去给小明的小红书👇账号点点赞吧~!我不想努力了,想吃软饭了。