上午去面试亿览在线,也就是酷我。好像很久前投的简历,我应聘什么职位都忘了。第一个面试的人上来就问我是来找实习的不是,汗~~。上来就问JavaScript熟不熟,看来可能是招聘前端开发的。我对那些不懂也不敢兴趣,然后就随口说知道一点点,没怎么深入过,只是用js来做一些简单的数据验证,然后他让我写个正则表达式验证电子邮件。 后来看我不太感冒,就该问数据结构和算法的题。 一道问从一堆数找最大的前十个。这种题都被问过N次了。我说排序后建堆就可以了。然后问了到sql查询的,找大小10-20的记录。我说在mysql里用limit就可以了。然后他又让我不用limit,能不能写一个通用的。没想出来。
后来上网查了一些,可以用子查询:
思路很简单,比如找前10的记录。
最小的数找不到比它小的
第二小的只有一个比他小
第三小的只有两个比它小
......
前N小的最多有N-1个比它小的
select * from mytable as t where N>(select count(*) from mytable where col<t.col);
不过有点问题,就是不能有大小相同的数。
比如
1
2
2
3
找前2个数,那么这个查询会把两个2都找出来,我还没有想出解决这个问题的方法
求10-20就很简单了,先求前10,再求前20,然后求差集就可以了
接着问了一道题,回来也没想出来。
给定一堆数,要求分成两堆,使它们的差的绝对值尽量小。
比如 1 2 3 4 5 那么最优解之一是 {1, 5} { 2, 3, 4}
当时只想出穷举的方法。
回来也没想出好算法。
第二个面试的问了一些java的问题,equals和hashCode的关系,synchronized,都很简单。问了一个算法题,其实就是emc的一道笔试题。一个升序的循环数组,不知第一个数在哪里,要求查找某个数。我想都没想就说了。先折半找到最小的数的下标,然后折半查找,不过坐标要做一下变换,比如原来是i,现在是 i+最小数的下标 mod N 而已。
唉,英语口语太烂了,emc的面试惨不忍睹。
下午开了一下午的会,还是被老板逮着了。要实现一个爬虫,能够抓取图片,以及图片周围的描述性文字。
如果真要实现的话可能要做页面分析,还挺费劲的,先从google那里弄些现成的看看能不能应付吧,可恶的863,我的寒假又少了一周。