Notion 软件工程师(SWE)面试经验分享
面试流程概览
Notion 面试过程包括 系统设计 + 编程实现,重点考察 HTTP 服务器搭建、JSON 处理及 Golang 基础。
Coding 题目 - 实现 Chat Room(Golang)
题目描述
- 设计并实现一个 聊天室系统(Chat Room)。
- 主要功能包括:
- 用户加入聊天室(joinRoom)
- 用户发送消息(sendMessage)
- 获取聊天室消息(getMessages)
- 用户离开聊天室(leaveRoom)
- 使用 Golang 编写 HTTP 服务器,处理 JSON 数据的编码和解码。
示例 HTTP 处理函数
http.HandleFunc("/chat/join", joinRoom)
http.HandleFunc("/chat/send", sendMessage)
http.HandleFunc("/chat/messages", getMessages)
http.HandleFunc("/chat/leave", leaveRoom)
服务端启动
http.ListenAndServe(":8080", nil)
考察点
- Golang HTTP 服务器搭建(标准库
net/http
使用)。 - JSON 处理(Encoding & Decoding) 进行数据交互。
- 基本 API 设计,保证 RESTful 规范。
面试体验
- 面试官不会 Golang,但态度友好,愿意帮助查阅标准库文档。
- HTTP 服务器搭建耗时较长,影响了整体代码实现的完整度。
- 调试 HTTP 请求 主要使用 Curl 命令,可以随时 Google 相关指令。
- 建议提前熟练 Golang 标准库,避免因 API 不熟悉导致时间浪费。
面试总结与建议
- Golang HTTP 服务器实现 需熟练,掌握
http.HandleFunc
及http.ListenAndServe
。 - JSON 解析能力 重要,需熟悉
encoding/json
处理数据流。 - 面试官可能不熟悉具体语言,但会考察 系统设计、API 设计思维。
- 高效时间管理 关键,避免在 基础搭建 上耗费过多时间。
- 建议提前练习 HTTP 服务器开发,掌握 Curl 调试 HTTP 请求。