📣 独立日限时特惠: VIP通行证立减$68
查看: 7878| 回复: 24
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] 聊一聊面向mobile的系统设计面试

   
全局:

2020(10-12月)-CS硕士+5-10年 | 内推|BayArea湾区 MobileEng全职@google
本帖最后由 littleric 于 2020-11-14 03:11 编辑 . .и

最近拿了狗家l5,虽然被lowball的很严重。 但是好赖也是个l5,老婆也申上了转码水校 。。。心情还不错。想说自己也面过不少公司了, (FLAG)的offer都拿过,所以还是想厚着脸皮分享一下做系统设计的一些心得体会。算是报答这段时间地里朋友的帮忙。这里我想详细讲一下面向senior职位的系统设计。我本身是做mobile的所以都用mobile的东西来举例,但是我觉得思维模式这种东西,不管是什么方向应该都适用?说的不对轻拍。。。。
. Χ
我个人觉得一个好的设计者应该在拿到设计议题的时候第一件事不是着急画所谓的架构图流程图,而是要先和面试官确认  1. 需求 2. 设计的Scale。 这两个东西是互相影响的。脱离需求谈scale 是空话,反过来面试官给你设定的scale可能也会影响你的需求(比如某些地方要做tradeoff,compromise一些用户体验等等)。


举个例子,我第一次面脸家的时候要求设计一个通讯录app。这个app第一次启动的时候需要调用service的api 去把当前用户的联系人信息都录入本地。我想也没想就开始设计api了,说了一大堆,末了我还想起来rest api最好再做个分页,这样index == 1 的时候只返回第一页的联系人 blabla。
. 1point3acres
然后面试官就问 : 为什么你要分页?
我 : 这样app端可以不用一次把所有联系人都down下来,节约data。。。
面试官:节约data?你的app大概有多少联系人?每个联系人的信息有多少byte?. 1point3acres
.--
我才恍然大悟,按照题目的要求,每个人平均只有500 个联系人,一个联系人加上手机电话号码等等不会超过1kb,这样算下来就是500kb。500kb对于一个api call来说也是可以接受。

综上所述,我们需要在得到面试官的需求的时候,估算这个系统或者app或者library的作用域,它的每个部分的scale是啥,这个推算的过程算是一个mid level的工程师的bar。

把需求和scale都定下来了就可以开始给面试官画你的架构图和流程图了。

                . ----

. 1point 3acres

架构图和流程图具体怎么画可以参考我以前写的一篇博客:https://juejin.im/post/6850037264655843341
. 1point 3 acres
架构设计的时候也需要谨记移动端系统的限制,比如app进入background之后系统会怎么处理?你想执行的东西还能执行等等问题。

举个例子,假如要你设计一个在系统后端下载壁纸,并且定时更换系统墙纸的app,你怎么处理下载这个问题。很多人说easy我开一个service就行了,偷偷在后面下载image。但是background service有被系统强制GC的风险。假如用foreground service又需要我们发送一个sticky的notification,有点影响UX。你在做设计的时候如果能展现出你在这方面的权衡,也是很好的加分项。.1point3acres

聊完大概的架构,如果是 FB E4的面试,面试官一般就会开始挑一个component来问你细节。

如果是FB E5或者狗家L5那又是不太一样。 对于Senior的岗位来说,除了设计出好的架构来说,最重要的两点

1. 面试者能不能自己carry整个conversation,
2. 面试者能不能在设计中体现cross team impact

第二个尤其重要,这也是我在面试之前和很多有经验的面试官交流得到的结果。. ----

对于一个Senior Candidate来说首先需要具备一个人把整个设计描述完的能力。如果面试官一直没说话也是正常的,因为他要完整的听完你说的全部内容,不太会插话。对于第二点,其实也是很多公司promo到senior的要求。以亚麻为例。。。我写的promo doc送去审查的时候就必须要求我有做过cross team的项目,牵涉的团队越多越好。
. 1point3acres
当然对于一个mobile相关的开发者,这个有点难。毕竟我们不碰service也不碰database,怎么体现你的cross team impact呢?

这个还是有办法的。因为现在很多大厂一个app其实也不止一个team去做,可能会有component team, growth team,app team一起。如果你可以体现你在设计的架构中能够体现:

1. 给其他feature team提供良好的abstraction layer
2. 给不同的feature良好的代码隔离

等等,都是可以帮助mobile senior人士展现自己的cross team impact。

. Waral dи,
暂时就想到这些。。。。


本帖子中包含更多资源

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

评分

参与人数 18大米 +50 收起 理由
xzysolitaire + 2 给你点个赞!
fffionaa + 2 很有用的信息!
xhw123 + 2 欢迎分享你知道的情况,会给更多积分奖励!
hackenkreuz + 1 给你点个赞!
mchzh + 3 很有用的信息!

查看全部评分


上一篇:【认真求问】PhD如何找亚麻的AS/RS职位呢?
下一篇:拿到3个实习offer:2020秋招碎碎念
推荐
Yeek 2020-11-16 16:42:56 | 只看该作者
全局:
多谢分享 非常宝贵的经验
回复

使用道具 举报

推荐
 楼主| littleric 2020-12-15 12:24:36 | 只看该作者
全局:
mchzh 发表于 2020-12-15 11:11 ..
看了楼主之前的一些帖子,真是够强啊,请问系统设计平时有啥好办法练习吗?楼主主要看什么材料?多谢

这个我感觉还是得靠工作经验,如果你自己做个一到两次项目的设计(文档)。完成一个设计面试应该不算难题。只不过为了应付面试会有一些小技巧,比如fb要求drive conversation,还有要speak out lound pros and cons等等。不过这些都是一些小细节。如果真的要说准备的话,可以自己给自己出题目,比如设计一个xxx,然后你尝试看吧自己当成 一个junior developer,看看自己能不能说服自己。

评分

参与人数 1大米 +3 收起 理由
mchzh + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
 楼主| littleric 2020-11-20 00:19:04 | 只看该作者
全局:
x2012t 发表于 2020-11-19 22:09
看了一下楼主是做android为主  不知道狗家允许用kotlin面试么。。

几年前面试时候最怕system design因为 ...

其实我倒没问不过kotlin应该没毛病。你说的对,其实对于一个工作三年左右的engineer,自己独立设计了1-3个项目,和其他组撕过逼。。。。应该设计面试的知识点都大体能答出来了。剩下的就看交流和沟通顺不顺畅,还有解释东西能不能解释清楚。当然我觉得表达能力这玩意真的很难练。。。
回复

使用道具 举报

🔗
 楼主| littleric 2020-11-17 02:42:49 | 只看该作者
全局:
Yeek 发表于 2020-11-16 16:42-baidu 1point3acres
多谢分享 非常宝贵的经验
.--
希望能帮到你!
回复

使用道具 举报

🔗
nerozeng 2020-11-19 03:42:58 | 只看该作者
全局:
感谢分享~

另外吐槽一下,你遇到的脸家这面试官经验不够啊,作为一个曾经在狗家做过Contacts的人表示做通信录App真的要分页的,不然往ContactsProvider里写数据时数据超过了1MB的话Bundle就直接crash了(血的教训)。。。
回复

使用道具 举报

🔗
 楼主| littleric 2020-11-19 12:22:47 | 只看该作者
全局:
nerozeng 发表于 2020-11-19 03:42
感谢分享~. Χ
. ----
另外吐槽一下,你遇到的脸家这面试官经验不够啊,作为一个曾经在狗家做过Contacts的人表示做 ...

哈哈谢谢!.--

我想面试官的重点是要我分析一些数据大小,至于到底要不要分页就再说。我当时的确也是想也没想就脱口而出了,
回复

使用道具 举报

🔗
x2012t 2020-11-19 12:25:51 | 只看该作者
全局:
本帖最后由 x2012t 于 2020-11-19 12:27 编辑

我面好几个公司的 mobile system design 基本上都遇到需要建立一个 web socket communication平常工作真没机会碰这些代码。。

评分

参与人数 1大米 +1 收起 理由
longjia + 1 欢迎来一亩三分地论坛!

查看全部评分

回复

使用道具 举报

🔗
x2012t 2020-11-19 12:30:31 | 只看该作者
全局:
而且  狗家 会直接问 backend设计 我以前面的时候 就让我设计ticketmaster server..
其他几家还好 不过现在狗家还是只让用objc 面试不让用swift..我想想就放弃了。
感觉狗 A 家不问相关技术问题。。其他的F U L 都会问能戳到痛点的技术问题 相关经验不扎实 很容易被问住
回复

使用道具 举报

🔗
 楼主| littleric 2020-11-19 13:59:08 | 只看该作者
全局:
x2012t 发表于 2020-11-19 12:30
而且  狗家 会直接问 backend设计 我以前面的时候 就让我设计ticketmaster server..
其他几家还好 不过现 ...

嗯websocket 是经常考的,尤其是设计real time game的时候经常用,感觉的确是一个比较常见的考点。不过还要设计backend是有点过分了。。。咱mobile也不懂这些啊。。。
回复

使用道具 举报

全局:
已加米多谢分享。楼主可不可以再分享一些mobile design常见的坑点?
回复

使用道具 举报

🔗
 楼主| littleric 2020-11-19 15:35:08 | 只看该作者
全局:
TiAmO723 发表于 2020-11-19 14:15
已加米多谢分享。楼主可不可以再分享一些mobile design常见的坑点?

没问题我感恩节假期看整理一下,你觉得ok可以先看看写设计文档的这个文章也是我自己写的:https://juejin.im/post/6850037264655843341。 其实感觉写好项目的设计文档,设计面试也差不多了。。。

评分

参与人数 1大米 +1 收起 理由
TiAmO723 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表