👉 项目官网:https://www.python-office.com/ 👈

👉 本开源项目的交流群 👈

github star gitee star atomgit star PyPI Downloads AI编程 AI交流群

战果1

大家好,这里是程序员晚枫,正在all in AI编程实战

今年1月来到法务部,体验券用完了,该回到代码开发岗位了。

好在重庆虽然没有什么互联网公司,但是车企不少,毕业以后在车辆检测行业、航空行业和车企研发岗位的Python、Java、C++、Vue开发经验还是很容易过简历,所以陆续收到了一些面试。

最近遇到了几个Python开发的岗位,工作之余准备了一下,又让我找到了钻研技术的乐趣。

今天我把sls面试的问题都拆成“面试官想听什么 + 你应该怎么答 + 一句话记忆口诀”。背口诀、背代码,都能做到张口就来。


1. 闭包(Closure)

面试官想听

  • 定义:函数内部再定义函数,内部函数引用了外部函数的局部变量,并且被返回被外部引用,形成“变量背包”。
  • 经典坑:循环里创建闭包,变量引用的是最终值。
  • 应用:装饰器、延迟计算、数据隐藏。

你的回答模板

1
2
3
4
5
6
7
def make_power(n):
def power(x):
return x ** n # 记住 n 的值
return power

square = make_power(2)
print(square(5)) # 25

口诀:外函套内函,内函用外变,外函把内返,闭包就生成。


2. __slots__ 控制实例变量个数

面试官想听

  • 默认:每个实例自带 __dict__,可随意增删属性→浪费内存。
  • __slots__ 指定“白名单”属性 → 不再生成 __dict__,省内存,防拼写错。
  • 限制:子类也要再声明;无法动态加新属性;与多重继承小心冲突。

你的回答模板

1
2
class Point:
__slots__ = ('x', 'y') # 最多只能有 x, y

口诀:slots 白名单,dict 说再见,内存省一半,属性不乱添。


3. Flask 用户验证(最简可跑代码)

面试官想听

  • 扩展:Flask-LoginFlask-HTTPAuth、JWT。
  • 流程:登录 → 验证 → 写 session/cookie → 请求钩子或装饰器鉴权。

你的回答模板(Flask-Login 极简 demo)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask, request, jsonify
from flask_login import LoginManager, login_user, login_required, UserMixin

app = Flask(__name__)
login_manager = LoginManager(app)

class User(UserMixin):
def __init__(self, uid): self.id = uid
# 省略查询数据库

@login_manager.user_loader
def load_user(uid): return User(uid)

@app.post('/login')
def login():
user = User(request.json['uid']) # 这里应查库+校验密码
login_user(user)
return jsonify(msg='ok')

@app.get('/protected')
@login_required
def protected():
return jsonify(secret='🍗')

口诀:login_user 把用户塞进 session,login_required 把请求挡在门外。


4. RESTful 登录逻辑设计

面试官想听

  • 资源:把“会话”抽象成资源 /sessions,登录即 POST /sessions,注销即 **DELETE /sessions/{id}**。
  • 无状态:服务器不保存会话,用 JWT 或 OAuth2。
  • 状态码:201 Created(登录成功)、401 Unauthorized(凭据错)。

你的回答模板(伪路由表)

1
2
3
POST   /sessions       → 登录
DELETE /sessions/:sid → 注销
GET /sessions/:sid → 校验 token(可选)

口诀:登录不是动词,是资源的新增;令牌就是门票,服务器不记名。


5. MySQL 事务 vs Redis 事务

维度MySQL InnoDBRedis (MULTI/EXEC)
ACID完全支持,持久化、隔离级别仅原子性 + 隔离性,不保证持久性
回滚支持 ROLLBACK语法错误才放弃事务,运行期错误继续
锁粒度行锁/间隙锁单线程顺序执行,乐观锁(WATCH)
典型命令BEGIN; COMMIT; ROLLBACK;MULTI; … ; EXEC/DISCARD
口诀:MySQL 是银行级,Redis 是高速缓存级;MySQL 能回滚,Redis 只能“语法弃”。

6. Docker ENTRYPOINT vs CMD

维度ENTRYPOINTCMD
作用定义“可执行主体”定义“默认参数”或“默认命令”
覆盖方式docker run --entrypointdocker 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。

另外,大家去给小明的小红书👇账号点点赞吧~!我不想努力了,想吃软饭了。

小红书:爱吃火锅的小明


另外,大家去给小明的小红书👇账号点点赞吧~!我不想努力了,想吃软饭了。

小红书:爱吃火锅的小明

扫一扫,领红包

美团红包

滴滴红包

程序员晚枫专注AI编程培训,小白看完他和图灵社区合作的教程《30讲 · AI编程训练营》就能上手做AI项目。

🎓 AI 编程实战课程

想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!