interviewRecord
02/17
Service owner
- 对于自己service的认知还缺很多 - 知道service的bottleneck 
- 知道service的scale up/down方式 
- 知道service的metric 
 
- 又做development又做maintainence - Estimation怎么做,自己选什么样的machine 
- 为什么选8个cores, 而不是6个cores 
- 别人把这个requirement定义好了,对于service本身考虑 
 
- License based, 又是从AAD拿的 - 自己的cache 
- 自己的cache怎么和AAD做synchronization 
 
- 怎么样represent自己作为service owner 
System design
逻辑性
- 想问题的方式,customer需要什么 
- 一定要从customer入手,tiny url需要什么,长什么样 
- Customer看到五个character, 可以怎么来 
Assumption
- Teams - 非常modern的application 
- read heavy, write less 
- Relation database支持的QPS - 50K, 普通的hardware肯定是不行的 
- 愿意用这么costy的hardware来support 
 
- Make了一些decision - 设计系统需要什么 
- 考察面试者有没有经过自己认真的思考 
- 有没有好的reason去支持他的决定 
- 要么你改了,要么自己不确定自己是否是正确的 
- Take feedback - 是否跟自己的想法,要做的是否是一致的 
- 了解面试官给自己feedback的原因,两个人想法有没有在一条线上 - 从Slave那里去读的 
- 没有去想自己怎么样去回答 
 
- Balance为什么好,是否所有的都需要balance 
 
 
面试官的expectation
- Level +1 or -1 - 如果很懂很懂,会调节面试 
- 如果只是知道一些concept,但是没法灵活运用 
 
- 先要figure out出requirement 
- Clarify assumption 
- 做些basic estimation 
- 做个high level design, 他们之间怎么talk to - 讲两三个detailed component: - API design 
- DB sharding 
 
 
- Scale 
- Disater recovery 
讲自己擅长的一些东西
- 擅长API design - naming 
 
- 擅长Decouple 
- 那个很表面 - 做system design的时候他们不会和你说非常detail的东西 
- 把这些东西都往一个上面套的时候 
 
自己做过的项目
- 哪些可以换个方式做,都走的是short-term 
- 怎么样把short-term变成long-term - 这样就会有很多的想法 
 
- 去找senior和principal - 怎样让system考虑得更多,他们提到一些词或者想法 
- 很少有人 
 
- 知道很多edge case的东西是别人不知道的 - 面试官会很surprise的, 
 
- metrics不会无缘无故的 - 既然fire了能不能dive deep一点 
- 有些时候host, metrics 
- 各式各样的问题,整个analysis的过程会让自己对system更加了解 - 要用怎么样的load balancer 
- build shape 
 
- flaky的问题 
- service不是我own的时候需要去刨根接地 
 
03/02
Self introduction
- 准备一些常见的问题:biggest challenge - 一开始还是比较high level, 能给一些具体的example 
- 和其他人怎么合作 
- 你和其他人意见不一致 
 
Design Uber eats
- Clarify更清楚 - 需不需要ranking 
- 怎么样ranking 
- 这一页显示些什么东西 
- Feeds上有个照片或者meta data 
- Open hour 
- Menu 
 
Architecture design
- 可以做得更好是强调solution的trade off, 用MySQL和NoSQL的database用哪个更好 
- 区分Senior和Level4/5, 知道哪个会更好些 
Dive into detail
- geo-index: 如果没有了解过Geo Index 
- Elastic Search里面已经有了,用Tree的模式,是一个BiTree 
- 多刷题,多看题,GeoIndex比较经典的面试问题 
- NonSQL database: - 更容易改变Schema, 
 
- 熟悉哪些database, Cassandra 
疏忽的地方
- 下一步应该怎么做,直接return给user 
- 哪些restaurant是直接可以送到user这里的, 
- Filtering - Query时就可以做Filter 
- 有一个阶段去fetch restaurant data 
 
- Ranking - 即使是Product software engineer 
- 用什么样的machine learning model 
 
可扩展性
- 做estimation 
- 更重要的是sense of scalability - 具体的solution应该怎么样做 10K QPS或者1000K QPS 
- 最简单的sharding方式 - 根据city来sharding 
- 一个区来sharding 
 
 
- 从Web到CDN 
- Server之前 
- Service data base: 
- 画个图,到哪几层 
Last updated
Was this helpful?