上午监考,11点面搜狗。面得一般。发现c没有做过大项目,确实没经验,一个很简单的堆也答得不好。看来基础的东西要好好补习一下了。
下午5点面试获必获,很小的公司。不过面试的几道智力题目还是很有意思。
第一题是编程之美里蚂蚁的那道题。我说我见过,说了一下就过去了。他们见我知道,问从哪里看到的。我说编程之美里的题啊。他们好像不知道似的。
第二题是逻辑推理题,具体忘了。求一个人的生日,给出了10个日子。然后把月告诉第一个人,日告诉了第二个人。
第一个人说,如果我不知道,第二个人肯定不知道。然后第二个人说我知道了,然后第三个人也说那我也知道了。
开始没摸着头脑,后来想了半天终于想了出来。
第三题 有M个怪兽,B只兔子,一个人。 随机抽两个出来,怪兽碰到怪兽,抵消,不放回。怪兽遇到兔子,吃掉兔子,怪兽放回,兔子没了。怪兽碰到人,吃掉人,怪兽放回。兔子碰到兔子,都放回。人碰到兔子,可以吃,也可以不出。
求人最后活下来的概率。 M如果是奇数,肯定人被吃掉。M是偶数,当时没想出来。
还有一道是网页排重的,首先要定义什么是重复的网页。 我的定义是网页的正文部分重复就算重复。因为转载帖子时只是把正文转过来,导航栏,广告栏还是自己的。 然后我说用编辑距离比较,速度很慢。 然后我说要快就只能hash,但是hash的条件是网页一模一样才行,但是转载可能会加一些空格,换行,甚至少量的修改。 然后他们提示我分词。其实这个问题我很早就想过。就说把一篇文章看出一个词汇(token)上的分布,其实就是向量空间模型(VSM)中的一个点。然后可以去掉一些停用词,如空格,换行等等。然后可以对这个矢量做hash。
然后是实际的问题: 有一个电影网站,用户会给每一部电影打分,比如1-10分。然后可以求出电影的平均分。
现在的问题是,新出来的电影打分的人会比较少,有什么办法解决?
我的第一反应就是平滑。因为这是一个统计问题,如果实验次数很多的话,根据大数定律估计是没有问题的。
但是因为数据太稀疏,那么就可能会有比较大的偏差。 因为在语言模型中最简单的就是加一平滑。所以我说可以给没有出现的分数加一。他们认为不太好。
然后我又换了种思路,因为每个打分用户的标准不一样,有的松,有的严。
比如 电影1的平均分是5 A给电影1打分为6, 而给新电影2打分为7,那么可以折算成 5*7/6。
他们认为这个思路还不错,不过有两个缺点,一是必须注册用户,如果是匿名用户的话不能实习,还要就是计算量有些大。
然后提示我不用想得太复杂。比如打分的人越多,就越准。
我顺着提示给出了一种方法。先用所有电影的平均分作为新电影的基准分,随着打分人数的增加,打分的权重越来越大
比如可以用现在打分人数/每部电影的平均打分人数*现在打分的平均值。 当然还要做归一化。
他们觉得还可以。
接着是一个开放题,三选一,好像有个什么开发月球的,我选了一个为一只手的人设计键盘
我当时的思路局限在怎么设计键盘的布局上。比如键应该少一些,没个键上可能不止两个字符,比如可以4个或者更多。选择是一个shift键可能不够,需要两个 2的平方=4种组合。
比如怎么根据字符的不同概率,设计字符的分布,使得按了各个手指的按键次数差不多,而且按了一个键后下一个键离它不能太远。
然后他们说不要把思维局限在这上面。我说能语音识别不,他们说也是一种思路。然后我就把五种感觉都想了一下,触觉可以写字ocr,听觉语音识别,视觉好像只能接受信号,发送信号目前好像不行。嗅觉好像也很难发送气味。
他们看时间很晚了,也就不在问什么了
回来的路上想,没有手,其实能不能用脚输入?
回来上bbs,看到有转让火车票的,打电话过去,发现被人抢先了。于是狂盯着版面刷新。呵呵,看来做论坛的垂直搜索还是有用的。
后来去水木发现有转让T61的,就要了。没办法,19号的票有点晚,但明天去火车站买也最多是18号的。而且还是到冷水江的,我只能先到长沙然后坐汽车了。唉,学校订票都订不到。真郁闷。
今天某人生日,Happy Birthday to you.