google 面经 - proudmore的专栏 - 博客频道 - CSDN.NET



google 面经 - proudmore的专栏 - 博客频道 - CSDN.NET

input string:"+++–++-+"
游戏规则:每人每次可以 flip "++" to "–"(必须是相邻的)
第一问:generate all possible moves
第二问:determine if this player can will. 下一步没有连续的++

2.
1.先写反转链表,然后第二题把链表变成a1->an->a2->an-1
2.第一题是path sum难度一样的dp水果。 第二题给画布上的几个线段,问怎么画最快(移动画笔会浪费时间)
solution: 线段作为vertex,端点之间的连线是edge,转化成tsp问题
3.给一个字符串,问可否组成一个新串使得每两个相邻字符不重复
**solution:**O(n!)
4.先问简历,然后又是一个path sum难度一样的dp水果
5.扫雷
solution:
set mines,其他counter=0, 然后对每个mine周围的counter++.
click: if mine, lose. if empty, show counters and run dfs 打开连通分支
mark a flag: nothing happens
2 layers: UI + matrix

3.设计一个电话本系统,实现三个功能:查找号码 boolean isTaken(),添加号码 void takeNumber(),返回一个不在电话本里的没人用的号码 number giveMeANumber()。我一开始说用HashMap,这样前两个函数的复杂度都是O(1),第三个是O(n)。面试官说能不能优化第三个函数,我说用BST,每个节点多存一个value记录这个节点下还有几个available的号码,giveMeANumber()的实现只要沿着value>0的node往下找就行了。这样三个函数的复杂度都是O(lgn).

  1. 要从server A 到 server B 备份很大的文件,网速很慢,文件改动很小, 用rsync: delta更新

5.
1.Word abbreviation,
e.g. Between=>b5n, friend=>f4d
Follow-up: implement
Bool checkduplicate(string [] dict, string word).1point3acres缃�
E.g. {feed }, feed => false; {door }, deer =>true; {dare}, deer => false
如果dict里有word 和input word的abbreviation 一样,则return true
follow up:如果调用很多次。 用hashmap<abbreviation, list<string>>
2.Given a list of words, find two strings S & T such that:
a. S & T have no common character. From 1point 3acres bbs
b. S.length() * T.length() is maximized
Follow up: how to optimize and speed up your algorithm

6.
onsite面了四轮,
设计random queue(面经题!!),follow-up,设计支持权重的random queue, 这一轮对复杂度的计算很多
第二轮,面经题,返回一个整数的平方和表示,使得个数最小。
第三轮,三道leetcode变种。返回二叉树的最小深度;抢银行的新题,一个数组不能连续访问两个相邻的数字,求和的最大值;求rotated sorted数组的最小值。这一轮比较开心。。
第四轮,我靠题目就是设计一个RMQ(http://en.wikipedia.org/wiki/Range_minimum_query) (我也是后来才知道这是RMQ的)。
solutionhttp://dongxicheng.org/structure/lca-rmq/
预处理空间+时间 O(nlgn), 查询O(1)

第一轮,给一个字符串数组,找出这样的字符串对(str1,str2),使得1,两个字符串不包含一样的字符,2. 长度乘积最大。我一开始对面试官说O(n^2)比较intuitive,然后写完了之后让我改进,后来想了一个按长度先排序,然后设置两个指针慢慢移动,估计会好很多。.
第二轮,偏向c++功底跟concurrency。实现memcopy,还有就是实现一个银行的类里面的几个算法,都很简单,但是对多线程调用的加锁需要有了解。最后又问了一个实现每次调用,运行5秒,期间不停循环自增的简单算法,follow-up是如何应对系统管理员尴尬地恰巧在这段时间内改了系统时间。

7.
1. 2个string排序,加special case 比如 'ch' 在'k'之前'j'之后.
2. 电话本。 用trie+count, 新号码沿着count>0的路走就行
3. string[]. 找2个没有common letter的string ,length乘积最大。
solution: new BitSet(26). 然后set(digit-'0'). 比较用 bitset1.and(bitset2)==0.
维护hashmap<bitset, list<string>>, 和top1, top2.每次更新hashmap的时候,如果有list size超过了top2, 更新top1,top2.
或者直接用a2b3c4d1…


Read full article from google 面经 - proudmore的专栏 - 博客频道 - CSDN.NET


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts