• 2015美团网面试经验分享


    时间2014年9月25日上午星期四     一面大约1h40min二面:40min

    地点:中南大学科教北楼-301

    职位美团网算法project师

    结果你先回去吧!

    声明:不喜勿喷,仅供交流!

    谨献给面试被拒的我们!如知道相关问题的答案,麻烦评论一下,感谢!

    须要改进:1.面试过程中遇到实在不会的题目,能够让面试官提示你一下思路,切记不要和面试官发生争执(多谢二楼xindoo提醒)。

    Author:湖南农业大学 2015届一本科应届毕业生

    仅仅怪自己学艺不精,前路漫漫。其修远兮!

    2014925日星期四,上午10点去參加面试。面试地点是一个大教室,你坐在project师右边即可了;首先让你做一个简单的自我介绍,他顺便看一下简历,然后就步入主题了。

    开门见山:(下面简称Aproject师B 我

    A 你面试的是android?恩,以下问几个简单问题?

    B 恩。

    A android 里面的Intent 有什么作用?

    B 用于Activity之间的跳转,还有数据传递。

    A 恩。

    那么还有什么作用?

    B (还是坦白吧!不要不懂装懂)事实上android研究的不是非常深,事实上我用的最多的是算法?

    A 志愿里面有一个算法project师?为什么没选?

    B 我以为要求非常高。所以没敢填,所以写在了第二志愿!!!

    A 好吧。那我就问一下的算法题,过了就把你转到算法project师那里去二面!

    B

    A那你主要研究的算法有哪些?

    B 我平时研究的是dp和博弈。

    A 博弈?

    B 恩,主要是:背包问题(01,全然。多重,二维费用等)。威佐夫博奕,nim游戏。SG定理以及取走切割游戏。

    A 我们来看一个问题:n位的01串组成的集合S1(共个),找出一个母串:全部长度为n的子串所组成集合SS包括S1.

    有点抽象。看个栗子:

    比方 n=2   全部的01串有:00  01  10  11   

    0110 的全部2位的子串有:01  11  10  00符合条件,不能找到更短的了,由于至少得有201.你分析一下怎样找一个最短的母串!(注:这题我放OJ上了)

    B 然后想了一下。应该这个串长度最少应该>=。大约想了5min,感觉没什么思路!

    A 你想一下。编程怎么解决?怎么找出这个串?

    B 构造?

    A 不是,你把n位的所有01串所有列出来。再去选。

    B 暴力。

    A

    B 我说:这种话复杂度是()阶乘。

    A 这个串肯定包括连续n1和连续n0的情况。能够去掉非常多情况。复杂度能够降非常多

    B (无语,(!) 你这么点优化!!~~~~)

    /*****多谢楼下zgw071415 博友,弄懂了这个问题;故又写一文:

    De Bruijn序列的生成及其应用

    **********************//

    A 以下,我们来讨论简单点的问题:

       32位操作系统可识别的内存多大?

    理论值是4G

    A 为什么是4G

    B 由于32bit可编码的地址空间是2^32 。所以是4G

    A 那么你简单说一下操作系统是怎样分配内存的?                                                                           

    B 从开机開始?

    A

    B 首先,计算机加电,cpu直接将cs+ip置为BIOS第一行代码的地址,读取BIOS代码…..直到启动桌面。

    A 恩,那么以下说一下32int怎样每一段怎样划分的?内存分页,最小的段是多少位?

    B 好像是15位?

    A 偏移位占几位?

    B  2位吧!

    A 好吧。那么 ….

    B (坦白吧。直接打断他)这个我没怎么研究过!

     

    A 以下我们还是来做几个题:

    怎样推断一个单链表有环?

    B 想了一下,Hash判重。每次查询是O(1)效率是O(n),假设訪问过反复訪问的点说明有环。假设为NULL,说明无环?

    A 不错。那么辅助空间是多少?

    B  On

    可不能够不用辅助空间呢?或者仅仅用O1)的辅助空间

    B 让我想想?

       About 5min,.....

    B 好像没什么想法。由于你都忘记了你自己走过的路!

    好像不好搞耶!

    /***后来google之(请看官自备梯子)。发现google才是学术帝,龟兔算法!。(亦称快慢指针)stackoverflow上有这种问题!

    !还能够求环。效率On,突然发现优化无止境。

    ***/

     

    A 恩。那么我们来看下一个题!

      给你一个严格递增的序列,从中间某个未知的地方切成两段。将前一段放到后面,求最大值?注意划开的位置你不知道!

    B  O(n)的遍历能够,我认为你是要更高效率的算法!

    A

    B 在纸上简单画了画。大约两分钟thinking,发现能够二分搞!立刻给面试官讲了思路。

    A 恩。写代码实现一下。

    B 下手就写,写完之后,发现L<R有点小问题,没去管。

    A 面试官看了下,你的边界是不是有问题?

    B (还真的看出来了!

    )想了1min,改成L+1<R返回的时候max(a[L],a[R])就没事了.

    A 恩。不错。

    A 推断一个二叉树是否关于根节点左右对称。

    B 想了想。遍历树的方式,发现“左根右”==“右跟左”就可以推断是否“手性对称”(这是高中在书上看到的一个词)。

    A 假设一个做孩子为空,一个右孩子为NULL,那就不正确了。

    B 我说:加一个-1到遍历序列。

    A (面试官,又在纸上画了画)~~~你这种方法能够。可是你得保存遍历序列,可不能够不要辅助空间?

    B(好吧!原来优化了时间,再想空间优化,一般我仅仅做前一个)想了想,遍历。

    A 对!

    B 哦,真的。(顿悟)递归实现,每次比較左右孩子就可以!4种情况。

    A 写一下代码。

    B (好吧,习惯了!

    )下笔就開始,发现自己没写好。又自己重写了一次,大约花了7~8min。好了。

    A 面试官看了看。行。

    A 再看一个题:一个二叉树,层次遍历!

    写一下代码。假设你想记录下来一起输出也行。

    B (搞的我好像非常喜欢开数组似的。还有没有完!)BFS层次遍历即可。

      

    写完代码

    A 你先到外面等一下!

    B 恩。

    大约5min,通知进去二面。

    /----------------------------我是evil的切割线---------------------------------------------/

    /--------------------------------------------------------------------------------------------------/

    A 做。先简介一下!

    B 恩我来自……(介绍完成)

    A 以下我们来讨论一下CS.

    B 不好意思,没听太清CS是?

    A Computer Science(不屑)

    B 哦。计算机科学!

    (汗)

    A 看了你的简历,平时都研究哪方面的算法?

    B (又反复了一遍。。

    。)

    A我们先看一个问题:黑白棋盘,从左上角到右下角是否有路,仅仅能訪问上下左右4个位置,且为白色?问是否可达?

    B (心中窃喜,BFS寻路,签到题)问:用不用记录步数?

    A 不用!

    先看是否可达?

    B 那就是BFS!

    A 你写一下代码!

    B 大约6min,写完!

    最坏的情况下,复杂度On*m

    A 他一行一行看了代码!好像没发现什么问题。说怎么没输出路径!

    B (晕!你不早说!)拿回代码,改之。开了一个标记数组。存储方向!

    到达终点,从终点回溯输出就可以!

    B 可不能够不回溯!你这多了一重循环。复杂度最多是(n*m+n+m)仅仅是添加了O(n+m),时间复杂度!总的时间复杂度根本没添加!

    (真感觉,太没风度了,能不能找个心服口服的理由)!

    A 不一样,能不能不开标记数组!能不能不要那重循环找路。

    B 那就递归DFS,我写的是BFS

    A 能不能不用递归!

    B 那就将递归DFS改成非递归DFS。那也得开数组记录状态啊!

    A 能不能不开数组!

    B 非递归,不开数组怎么保存状态!(我感觉,越来越…..(声音好大。别人还以为我们吵起来了)

    A 那么我们来换一个题:

     如今,我们的server上有一个APK文件。你知道就是一个ZIP包,对于每个用户请求,先建立连接,然后推断请求来源,把apk解包,在manifest后追加来源信息。再打包成apk。发给请求方。

    问:1.假设多个用户同一时候请求,没有时差。怎么解决冲突?

            2 .怎样提高数据的发送效率?

    B 单例模式?

    A 单例模式解决不了。

    B 假设多用户同一时候请求,能够建立一个请求队列,然后推断请求队列是否为空,不为空,则循环取队列中的请求建立连接!

    A 假设两个用户的请求同一时候到达。

    B 对文件加锁。!

    A 假设两个请求同一时候请求加锁?

    B 这个….我不是非常清楚!

    A 那么看第二个问题,怎样提高数据的发送效率?

    B 得先找瓶颈段。看哪段效率最低?我认为的瓶颈段应该在节点的转发上!

    spfa寻最短路!

    A 不是!

    B 哦。数据到公网上就不受发送者控制了!那就是server端。数据包分组发送?

    A 那怎么分组?

    B 这个不是默认就分好的吗!

    A 你能够控制。

    B 好吧。这个不是太懂!

    A 那今天就到这里吧!你先回去吧!

    B (预计没戏!回去好好学习吧!)

    B 单例模式?

    A 单例模式解决不了。

    B 假设多用户同一时候请求,能够建立一个请求队列,然后推断请求队列是否为空,不为空,则循环取队列中的请求建立连接!

    A 假设两个用户的请求同一时候到达。

    B 对文件加锁!!

    A 假设两个请求同一时候请求加锁?

    B 这个….我不是非常清楚。

    A 那么看第二个问题,怎样提高数据的发送效率?

    B 得先找瓶颈段,看哪段效率最低?我认为的瓶颈段应该在节点的转发上!spfa寻最短路!

    A 不是!!

    B 哦,数据到公网上就不受发送者控制了!

    那就是server端,数据包分组发送?

    A 那怎么分组?

    B 这个不是默认就分好的吗。

    A 你能够控制!

    B 好吧!这个不是太懂!

    A 那今天就到这里吧!

    你先回去吧!

    B (预计没戏!

    回去好好学习吧!

    最后的最后:没有深入的了解TCP/IP……. 认为各种解释都是那么苍白无力!

    再次感叹书到用时方恨少。

    PS: 感觉自己就是战斗力仅仅有几的渣渣,革命尚未成功。同志还需努力!

     

     

  • 相关阅读:
    为archlinux安装mplayer
    linux与windows的文本文件之间的转换
    有关git的换行符的处理问题
    让git忽略文件模式的改变
    linux更新系统之后,删除多余的开机启动项
    关于centos更新后virtualbox无法使用的问题
    SQL 中逻辑运算符的优先级
    archlinux安装输入法需要的包及archlinux无法使用输入法的解决
    从前有座山,山里有座庙
    批量修改照片名称的shell脚本
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5142184.html
Copyright © 2020-2023  润新知