后端面试—关于系统设计与项目难点

2023-02-20 09:38:04 +08:00
 balabalaXMX

最近想要跳槽,找了一些面试,八股文基本上都是临时抱佛脚可以抱一下,但是项目亮点和系统设计有点不知道如何下手,有几个疑问想问问大佬们的想法。

  1. 老生常谈的项目亮点和遇到的难点是什么,这个需要说到什么粒度?比如我优化了一个本地缓存,本来是全局一个前缀树,解析字符串,根据 xxxx 的业务场景,改成了二级 map ,减小了锁的粒度。这么说是不是过于简单了?

  2. 面试官问了一个系统设计相关的题目:用户注册的用户名唯一,你会怎么设计。(原话,我想问一下上下文或者业务,面试官说要我自己想。)我说实现可以是插入 mysql 的时候使用主键来约束唯一性,问我还有没有别的办法,我没想出来。这种到底需要一个什么思路?要说得非常全面吗?

  3. 平时的工作中应该怎么挖掘和积累这种面试加分的东西?

5767 次点击
所在节点    职场话题
33 条回复
8355
2023-02-20 12:01:27 +08:00
其实单看问题二 一个简单的问题再加上海量的 QPS 和现存的海量数据方案一定是不一样的.

方案的最后一层可能就是个唯一索引是没错的.
但是你不能让所有的请求都在写库的时候才报错返回
整个库 其他业务也一样要读写
起码应该回答一下从缓存读取已有用户名

那如果访问量就是大到你的用户名专用 redis 都顶不住的查询量怎么处理?
所以公司希望你做需求给出的设计方案是考虑过这种问题
而不是你觉得现有资源可以随意 cover 糊一糊 搞一堆屎山代码以及大量技术债务最后干不下去离职跑路其他人再来花大量时间精力擦屁股.....
yangzhezjgs
2023-02-20 12:56:17 +08:00
其实这一块也有一些学习资料,不多大多是英文,可以去找电子版
System Design Interview https://book.douban.com/subject/35246417/
System Design Interview: Volume 2 https://book.douban.com/subject/35803094/
Software Architecture: The Hard Parts https://book.douban.com/subject/35587139/
Designing Data-Intensive Applications https://book.douban.com/subject/26197294/
amazon 上搜 system design 还有很多其他的
vitoliu
2023-02-20 13:34:30 +08:00
个人认为;
1.对项目的难点可以侧重于思考下,因为业务而选择了什么技术,而不是为了炫技,非要用厉害的技术。半个小时能让面试官清楚了解你的业务以及你的角色就行。
2.考虑场景可以周全一些,用户名全局唯一,如果一开始就这么设计,可以通过唯一索引,ascii 码表等方式去实现。
如果是全局改造,类似微信更换 uid ,淘宝更换用户昵称那种,那用户名肯定是不太方便用来做主键的,得站在拓展性的角度去思考。
3.多看看竞品,每个项目多少都会有自身竞品,或者说有效仿的目标,跟着他们进行架构演进的思考——怎么去做,为什么要这么做。自然而然就能成为该领域的专家。
caiji11
2023-02-20 13:39:28 +08:00
@lscbqr 一看这问题就是阿里吧
gwent
2023-02-20 15:30:33 +08:00
doodle123
2023-02-20 20:07:35 +08:00
如果回答数据库唯一索引的方案,要顺便说出来,逻辑删除的时候怎么处理,是不是要加上删除时间字段,用 user_name, del_flag, del_time 做个联合唯一索引
dlmy
2023-02-20 21:14:03 +08:00
@caiji11 这你都知道,面的 国际事业部-跨境业务运营中心,pua 味道不是一般的浓,张嘴就问你有什么价值
abelmakihara
2023-02-21 12:31:24 +08:00
balabalaXMX
2023-02-23 10:39:18 +08:00
@lscbqr 看完你这个我觉得我也被 cpu 了,二面的时候就是一直不停地打断我,然后揪着一些字眼问,但是最后又突然很客气。三面的时候语气就更差了,经常一个问题我话还没说完,可能有一点停顿,他就立马说不要扯别的,你就是不知道对吧,然后就问下一个问题。还说那你就是普通的程序员,项目也没啥亮点和难点,可是我投递的岗位也就是普通的程序员啊....又没有投技术总监。
balabalaXMX
2023-02-23 10:42:12 +08:00
@carmark 感谢大佬,我觉得这个思路我懂了,但是这个持续性优化思路是指什么?是指加上日志和监控指标这样吗?
balabalaXMX
2023-02-23 10:43:03 +08:00
@silencil 不要太多,基本都会问的。不过有些面试官会指引你,你每次集中解决一个问题,一步一步走就好了。最怕那种上下文啥都不给你,然后就让你设计的。
balabalaXMX
2023-02-23 10:49:43 +08:00
@ddzm 我当时也想到了布隆过滤器,但是布隆过滤器只能判断一定不存在或者可能存在,那遇到可能存在的时候怎么办呢?这个只是能加快一点效率,最后还是要 MYSQL 主键去兜底。当时面试官的意思可能是我理解错了,他想问我有没有一套不用 mysql 主键的方案。
balabalaXMX
2023-02-23 10:51:57 +08:00
@doodle123 这个确实,得考虑一个数据的生命周期。学到了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/917496

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX