Dropbox电面面经
他家电面有2轮,等待onsite。。
。
电面1:
国人MM面的。这点感觉非常难得。
统计近期5分钟的点击量,实现hit和getHit两个函数。这题是他家高频题,我用deque实现的,hit的均摊时间是O(1)。认为应该差点儿相同最优了吧。
后来要求写个并行程序,忘记问是写共享内存的还是分布式的了,写的有点卡。有时候纠结究竟用lock还是用多个local copy。感觉设计起来事实上就是CAP理论的实践。假设要求consistency。就不能partition,或者说使用lock的话availability会非常低。
假设我做多个local copy。感觉无法保证consistency。最后没时间了就仅仅是谈了下大概设计思路。
电面2:
MIT小白面的,感觉比較寡言少语,面试的时候不怎么说话,就安安静静看我写代码。
第一问:给一个电话号码,而且提供一个字典,要求给出全部与号码相应的单词。这个题目跟LeetCode里的letter Combinations of a Phone Number比較类似。DFS秒掉。简单分析了下时间复杂度。
第二问:假设dropbox这样的单词不在字典里,可是drop和box都在,那么dropbox也算,这样的情况怎么办。
我首先思路是沿袭第一问的方案。在DFS的函数里。除了一个string作为当前的string,多加了一个string參数作为merged string。
思路稍作改动,对于一个字母,有两个选择:1)能够append到当前string上;2)假设当前的string本身是一个合法单词,能够把当前string设置为空字符串,在之后又一次匹配。
第三问:我说第二问的解法可能会产生反复的解。小白就问怎样解决。我说了最简单的方法是用set去装结果,然后说想想其他解法。
之后沿着这样的思路想不下去了,决定换一种思路。思路应该和LeetCode里的Word Break不多。大致就是使用DP或者recursion + memorization。假设整个单词在字典里。就标记下。假设不是。尝试全部的划分方法。把单词划分为2个子单词,再递归下去。说了思路后本来想写的,应该之前做过这样的题目,结果小白预计怕我写代码时间太久。就直接到下个问题了。
第四问:假设给了dict,而不不过给了一个函数接口,能不能换种思路。我想大概是要我从dict出发,枚举出全部组合词,直到组合词的长度超过电话号码长度吧。我实现的时候做了一些剪枝,由于每次寻找下一个单词时,都是须要跟下一块号码子字符串相应的(用到了第一问实现的方法)。假设不正确应,那么就不用继续递归下去了。
第五问:问从字典出发的方法和从号码出发的方法,哪种好。我认为这个问题比較复杂。就说字典小的时候从字典出发有优势。不然就从号码出发。
第六问:我在解题的时候说字典假设能用字典树构造而不是set,那么解法能够被优化。
然后小白就顺藤摸瓜,问假设让我用字典树,怎么写代码。
我写了下,发现要改的地方不少。
一大半都得重写,写了一半。然后小白说时间到了。
除开開始10分钟问简历,后面5分钟让我问下问题,余下45分钟感觉根本不可能把全部的题目都写代码,后面2问事实上也就够时间写下伪代码。
感觉这一面还是非常顺利的,个人认为combination。enumeration一类的题目一般都不难,唯一难的地方是怎样去重。但小白的问题里基本都回避掉了这个难点。
Dropbox电面面经的更多相关文章
- 常用下载方式的区别-BT下载、磁力链接、电驴
出处:https://www.jianshu.com/p/72b7a64e5be1 打开 115 离线下载的窗口,看到支持这么多种链接,你都清楚他们是什么原理嘛?接下来我们一个一个说. 一.HTTP( ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文
阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...
- 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文
阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...
随机推荐
- 搜索 || BFS || POJ 2157 Maze
走迷宫拿宝藏,拿到所有对应的钥匙才能开门 *解法:从起点bfs,遇到门时先放入队列中,取出的时候看钥匙够不够决定开不开门,如果不够就把它再放回队列继续往下走,当队列里只有几个门循环的时候就可以退出,所 ...
- Hibernate-03 关联映射
学习任务 关联映射 inverse属性.cascade属性 单向的多对一.双向的一对多映射 多对多映射 关联关系 类与类之间最普遍的关系就是关联关系. 单向的关联 双向的关联 单向多对一关联 以Emp ...
- 《3+1团队》【Alpha】Scrum meeting 4
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 3+1团队 团队博客地址 https://home.cnblogs.com/u/3-1group ...
- java 垃圾回收之标记算法
对象被判定为垃圾的标准 1.没有被其他对象引用 判定对象是否为垃圾的算法 1.引用计数算法(不是主流垃圾回收机制) 1.1 判定对象的引用数量 1.1.1 通过判断对象的引用数量来决定对象是否可以被回 ...
- ios之sqllite3简单使用
SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加到内存中. 基本操作: (1)打开或者创建数据库 sqlite3 *database; i ...
- 「 SPOJ GSS3 」 Can you answer these queries III
# 题目大意 GSS3 - Can you answer these queries III 需要你维护一种数据结构,支持两种操作: 单点修改 求一个区间的最大子段和 # 解题思路 一个区间的最大子段 ...
- Linux文件属性和压缩解压
目 录 第1章 Linux系统文件的属性 1 1.1 命令ls 1 1.2 inode 2 1.3 文件属性 2 1.4 env命令 2 1.5 注意: 2 第2章 ...
- POJ 3522 Slim Span (Kruskal枚举最小边)
题意: 求出最小生成树中最大边与最小边差距的最小值. 分析: 排序,枚举最小边, 用最小边构造最小生成树, 没法构造了就退出 #include <stdio.h> #include < ...
- npm 的作用
接触 npm 也有一个多月的时间了,一直只是将他作为当着 webstorm + node.js 环境中的一个插件来用(甚至说把她当着命令来用).毕竟大部分的时间,他是输入的命令行中的一部分(别笑,小新 ...
- 【02】koala编译中文出错(已放弃不用)
http://koala-app.com/index-zh.html koala 下载地址. sass.中文编译出错: 打开 Koala文件夹位置->rubygems->gems- ...