一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1548|回复: 10
收起左侧

FactSet Onsite 面经

[复制链接] |试试Instant~ |关注本帖
wstjpu 发表于 2014-10-21 14:57:25 | 显示全部楼层 |阅读模式

2014(10-12月) 码农类 硕士 全职@FactSet - 网上海投 - Onsite |Other

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
拿到FactSet SF Office 的onsite面试。这篇面经有两个出发点:1 我的面试流程;2 整个过程我对FactSet这个公司的认知。

1、面试前会和总部那边的的HR来个视频会议,大体介绍一下一整天的面试流程。
2、公司demo介绍,一个美国白哥拿着他的笔记本在一个办公室里演示公司的产品,以及他们组做的部分。(这个最后会详细说)
3、技术面试-算法。一共两道题,两个面试官,第一道题目是一道string题, 不是面经上见过的。我发现面试之前这两个面试官貌似都不交流。这道题题目和test case很confuse,我开始理解错了(我想成了leetcode上那道minimun window substring的变形,这两道题的确很像但是不一样),在wrong track上兜了个弯子,主要原因是test case在这里和我的想法正好match了,但不是面试官想要的。这期间其中一个面试官居然还问另一个面试官,“这里这个test case是不是给的confuse,我们换一个啥的……” 或者 “你是想说这个意思吗blabla……”LZ在想他们出题之前都不商量吗。最后,再多加了两个test case的情况下LZ写完了这道。 我在这里略过这道题,觉得没什么参考价值,虽然面试官说了it will work,但是我对他这题深表怀疑……第二题很简单,BST 转换成Double linkedlist。一个迭代的中序遍历瞬间写好,walk throught code然后发现了一个bug改正。面试官说没问题,要求再写一个recursion版本的。LZ擦了白板开始写,写完时面试官说time out,然后让我问问题。recursion的代码没来得及看。
4、技术面试-设计题。白人主管+三哥。这里要感谢 shinichish 的面经,我遇到的也是Design an excel。由于有了面经,我之前有一些小小的准备。不过今儿说出自己想法的时候,还是遇到了很多问题。开始我先说用Matrix存储会浪费空间,所以用二维的Map:Map<row, Map<column, Cell>>。先和面试官讨论用map和hashmap存的问题,我开始坚持用map,因为excel表格中的行和列是有序的,后来他说:你在想想,其实没必要。我想了一下的确是的,只和key有关。排序的话也用不到row和column,用的是Cell里面的value。-========- 从这里到后面都是我之前在家里没准备过,临场发挥往上扔的……到这里他问了我插入和删除的时间复杂度,我说删除row还说,删除column比较麻烦,我要先迭代每一个row,他说你能不能想出一个办法,使得access的时间复度为O(1) 我想一会儿,尝试了两次被否定之后,将data structure定位map<row, Cell> map<column, Cell> 他表示赞同。讨论完这个basic data structure。在讨论big picture。我说这个Excel设计基于MVC,GUI不用解释,controller负责协调前后端,调用function计算,model就是基于那两个map。关键是Cell类的设计。面试官题了很多问题关于detail function的设计。比如每一个Cell里的datatype可以使int, float, double, string, function(这是我当时想到的……后来跟同学讨论完了发现还可以有时间日期啥的…………)如何处理?对于一些Cell 里面存的是function的,比如 B1=Sum C1:C100  B1怎么存?如果C1 = B1 当我修改B1时 C1怎么样能立刻马上也被更新?写一个方法,如何get Cell里的data(could be any type? is it better to do type check in class or out of class?)。LZ将所有built in function和用户自定义function都封装在一个function类中。对于每一个Cell都有一个reference数组表示和这个Cell相关联的其他Cell,例如B1 = Sum C1 : C100, 那么B1 本身的data type是那个function(可以用function里面的parse函数活得meaning,然后再对reference数组里的数进行操作)。然后面试官就问:只有是function的Cell需要reference,其他普通类型都不用,你怎么区分?LZ先是枚举类,后是strategy design pattern……后来冷静想了一下,完全可以用Cell父类,然后底下继承很多子类 再 加 strategy design pattern。不应该一起说枚举和这个……总之感觉design题目就是打补丁,随着问题的深入修修补补。. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
5、code review。 见shinichish面经。这轮感觉答的不是很好,最后一页code都没很多时间看,只简单说了一个小错误,因为之前的错误找的太慢了……面试官有他们固定的答案,你要是答的不是固定答案,他们会给hint直到你答出来。LZ之前准备了advanced C++里的很多很安全规范的写法,讲出来,面试官说不是他们想要的……就统统没用上……你必须说他们已经设计好的那些drawback。期间还会有基础知识问答,比如new string (str)会发生什么copy之类。. Waral 鍗氬鏈夋洿澶氭枃绔,
6、manager讨论简历。

个人觉得FactSet对面试者是很照顾的,整个面试流程体验很好,安排的很妥当。SF这边的office主要是负责paltform 开发,基于platform上会有很多公司其他的product。我个人在第一轮demo 演示之后就不太喜欢他家的product。不同的product掺杂这MFC和.Net。我问了一个,用C++是有大量的金融数据计算,对实时性和速度要求很高,所以很多显示的部分不能用java来做,是吗?那个SDE给我的解释是公司开发某些app时,java还没有呢……当然现在有人还在维护MFC做出来的东西……LZ在想难道现在这么多好用的的技术啥的就不能用来替代掉老掉牙的MFC吗……实在是不能理解。有类似几个points我认为可以migrate用更新的技术,加上demo演示的时候估计是网络原因,延迟很大……导致效果不是很好。

好累…….鏈枃鍘熷垱鑷1point3acres璁哄潧
.鏈枃鍘熷垱鑷1point3acres璁哄潧
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
补充内容 (2014-10-22 03:26):
这里修改一个地方,设计题的basic data structure LZ的想法是map<row, linkedlist> 和map<column, linkedlist>。

补充内容 (2014-10-25 14:28):
2天后收到offer

评分

5

查看全部评分

本帖被以下淘专辑推荐:

shinichish 发表于 2014-10-21 16:03:10 | 显示全部楼层
哇。。。楼主好厉害啊。。好多专业术语看不懂。。。
回复 支持 反对

使用道具 举报

happychenlei 发表于 2014-10-22 00:28:38 | 显示全部楼层
请问楼主onsite前有个电话面试吧,电话面试多久后通知的onsite呢?
回复 支持 反对

使用道具 举报

 楼主| wstjpu 发表于 2014-10-22 03:24:57 | 显示全部楼层
happychenlei 发表于 2014-10-22 00:28
请问楼主onsite前有个电话面试吧,电话面试多久后通知的onsite呢?

店面玩之后的第二天就schedule onsite
回复 支持 反对

使用道具 举报

 楼主| wstjpu 发表于 2014-10-22 03:27:00 | 显示全部楼层
shinichish 发表于 2014-10-21 16:03
哇。。。楼主好厉害啊。。好多专业术语看不懂。。。

i promise u以后再也不这么排版了~
回复 支持 反对

使用道具 举报

shinichish 发表于 2014-10-22 05:15:09 | 显示全部楼层
wstjpu 发表于 2014-10-22 03:27
. 1point 3acres 璁哄潧i promise u以后再也不这么排版了~
.1point3acres缃
嗯。。。
回复 支持 反对

使用道具 举报

strawberry008 发表于 2014-12-1 09:24:30 | 显示全部楼层
请问楼主最后是使用了2个Map<Integer, LinkedList<Cell>>吗?这样的话删除一行或者一列是不是还是需要遍历啊,还是O(n)? 这么做比两个 Map<Integer, Map<Integer, Cell>>好在哪儿呢?
回复 支持 反对

使用道具 举报

Adeath 发表于 2014-12-2 01:33:13 | 显示全部楼层
strawberry008 发表于 2014-12-1 09:24
请问楼主最后是使用了2个Map吗?这样的话删除一行或者一列是不是还是需要遍历啊,还是O(n)? 这么做比两个 M ...

删除一行最好也是O(n)吧  必须每个元素都操作到  但用linkedlist就不用操作别的row了  如果只用cell的话 比如删除一列 得遍历每一行 找到位于该列的元素  这样是O(mn)  (m is number of rows  
回复 支持 反对

使用道具 举报

Adeath 发表于 2014-12-2 01:38:46 | 显示全部楼层
strawberry008 发表于 2014-12-1 09:24
请问楼主最后是使用了2个Map吗?这样的话删除一行或者一列是不是还是需要遍历啊,还是O(n)? 这么做比两个 M ...

哦不好意思  我没注意你的是两个map 如果是Map<Integer, Map<Integer, Cell>> 应该也是O(n)  不过这里行列都是连续的  个人感觉linkedlist好一点
回复 支持 反对

使用道具 举报

strawberry008 发表于 2014-12-2 03:41:12 | 显示全部楼层
Adeath 发表于 2014-12-2 01:38
哦不好意思  我没注意你的是两个map 如果是Map 应该也是O(n)  不过这里行列都是连续的  个人感觉linkedli ...

多谢多谢,不过LZ对于function cell除了sum还有什么其他要求实现的function么?
回复 支持 反对

使用道具 举报

尚佳蕾 发表于 2015-3-2 11:16:50 | 显示全部楼层
excel那个关于删除的follow up,可不可以用两个double hashmap来做,一个是unordered_map<rowIdx, unordered_map<columnIdx, cell>> rowData,还有一个是unordered_map<columnIdx, unordered_map<rowIdx, cell>> colData,这样的话删除行只要删rowData中对应的hashmap,删除列的时候只要删除colData中的hashmap,然后get的时候两个double hashmap都查一遍,如果都有且value一致则返回,否则返回默认空cell的value。set函数的话也是同时set两个double hashmap的值。这样一来所有操作都是O(1),只是用了两倍空间。但是还是远远小于用double vector
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-11 06:54

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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