涂鸦智能之面试

这次面试的确收获比较大,面试官是个大神,问的问题都是比较经典的,下面说一下问的几个算法问题。

1.    给你文件里面存的是IP,这个文件有20G那么大,让你统计出出现最多的IP,给你的内存是20M

2.    给你一个垃圾邮箱的列表,这个列表列表比较多的,然后给你一个邮箱,让你判断是不是垃圾邮箱.

3.    给你一个mp3格式的语音,让你转化为汉字(提出思路)。

当时面试的时候我是一个也没回答出来,太虐心了,好歹是练过三年的算法,其实前两个好好想想是可以回答上来的,首先说一下解题思路。

第一题:

首先是IP是2^32个,数量是比较大的,所以采用数组下标来统计是不行的,那样我们可以采用一个比较好的哈希算法来将IP进行分组,然后在分组来统计。

我采取的哈希函数是h(ip)=IP%10000,这样就将IP分为10000份了,每一份都是无序的,并且是不同的,但是有个区间范围,下面就是对每一组进行统计。我采取的是排序二叉树进行统计,节点上存的是左右子树和IP次数。

最后遍历二叉树就知道哪个出现的最多

第二题:

将邮件列表按照首字母分为a,b,c…26文件

扫描二维码关注公众号,回复: 16142475 查看本文章

再分为次位数为a,b,c….文件,这样一直往下找.

第三题现在还不会,等解决了,再来重新编译。

算法问题以为是必拿分的,可是一分没拿,心态爆炸。

下面就是问一下Java问题,

1.    创建线程的方法,这个我回答上来的,就是单词不会拼,写出来的。

接着又问这两个方式适用于什么时候,也就是两者的优点,这个给我问蒙了,其实仔细想想就知道了,一个继承一个接口,当然在一个类还需要继承其他的类的时候,创建线程的时候肯定只能接口实现了,还是没有总结,唉。

2.    为什么SQL语句中的索引能优化SQL语句。我只是回答了这个索引相当于一个hash值,但是这个回答面试官并不认可,只是说这不是官方的回答,这个问题我只会这点,啊,再次心态爆炸,只能若若的回答,我只了解这些,其实下午我看了索引,忘记了。

3.    怎样查看jvm的内存?这个问题我理解成检查ubuntu系统内存问题,又只能若若的说我没有了解过,还解释一下我们现在排错都是在eclipse上排错。显然面试官会反驳你。

就记住这些问题,其他的忘了。

最后问了面试官我还需要进行哪些方面的学习,当然我已经知道自己肯定不能入职,回答的太差了,所以问问自己的不足,下去好好的补。唉!

       面试我提前三个小时去的,还在住房公积金办事所,坐了2个小时,复习一下算法,还是GG,下面继续加油。基础的东西还是要知道的。


猜你喜欢

转载自blog.csdn.net/zs520ct/article/details/79810447
今日推荐