Timbo Site

write something


2025年4月工作小记

最近遇到了一些工作上的事,觉得很有趣,这里写下来记录一下。

检查用户是否有初始密码

有个需求是这样的:用户通过手机认证一键完成注册,那该用户是没有密码的。之后用户要修改密码时,判断用户是否设置过密码,如果有,那么需要输入原密码和新密码来修改密码;如果没有,那么只需要设置新密码。

很多手机号码认证一键注册的流程,会在初始化时强行弹出一个页面,要求用户设置密码。当然不设置密码也是可以的,现在手机号码相当于用户的凭证,认证手机号码自然可以确认该用户的身份。

这里不是要讨论密码有无,或密码强度的合理性,而是要讨论如何设计一个密码来判断用户是否设置过密码。

假设通过复杂手段转储密码,密码只能单向认证,不能逆向解开,穷举密码难度很高。我的设计方案是:直接为手机认证一键注册的用户设置一个“我永远喜欢加藤惠”或者“我想做玛奇玛小姐的狗”,或者再简单点,密码就是“密码”就好。密码必然不可能为上述的语句,只会是一串莫名的密文,只要判断“我永远喜欢加藤惠”或“我想做玛奇玛小姐的狗”或“密码”,那么该用户没有设置过密码。

判断用户是否使用过某个功能

莫名被告知要做这么一个功能,实现时要在用户表上再增加一列来存储这个字段来实现。有种小学生的感觉

很多系统都需要这样的一个设计,一个简单的记录表就能搞定:

用户 行为 时间
玛奇玛小姐的狗 签过协议A 2025年4月15日11时11分11秒
玛奇玛小姐的狗 用过功能B 2025年4月16日12时12分12秒

为(用户 + 行为)设置个简单的Unique键,无脑写就行,冲突就DO NOTHING。要检查用户是否使用这个功能,只需要查是否有记录,有就返回true,没有就返回false。整个表只有SELECT和INSERT两个轻量级操作,没有UPDATE这样INSERT + DELETE的操作,也不会触发VACUUM。

面试

今天有个1年工作经验的候选人因为学历的问题在HR关被秒了。下午找了HR那边报一下,我又得继续招人了,HR小妹妹给我发个哭脸的表情。又被提醒北京邮电大学只是个211大学。

面试挺浪费时间的,候选人希望面试流程不打扰他们的日常工作,都选在晚上面,导致我也得跟着加班。疫情几年让远程面试变得很常见,坏处是没有手写代码和白板编程(碰到过面试时用AI补全的,还写不出来),好处就是觉得不好可以快速结束(我可以开美颜)。

很多人有丰富的工作经验,面了很多10年工作经验的,但面试下来觉得和工作了1-2年同事差不多。很多人有非常亮眼的简历,但精通的技术问了几个很基础入门的问题答不上来。夸夸其谈的候选人太多,问问题时总弯弯绕绕不直接回答问题,重复了三次问题后,才说不知道。还有简历上有精通Git的,问了一下git rebase和git merge的区别,答不上来,不敢再继续问了。

有时候还要照顾有候选人情绪,做点心理按摩,不说接雨水了,爬楼梯答不上来,就赶紧换个two sum,真答不上来我还要打哈哈过去。之前还怕面试产生纠纷,都默默用手机在一旁录音,回来还做点小笔记。现在面试有字幕有总结还有候选人情绪分析,挺厉害的。但还是怕现在年轻人整顿职场,动不动就挂你到小红书和v2ex上。

后记

高强度上了快一年的班了,今天解决了个Ubuntu 24.04下无法使用TLSv1.0的问题,剩下的难题不多了。

明天可以去找大领导谈我这边要招130个人来解决当前工作量很多导致我干不了活的问题了。