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