好贷网好贷款

我的面试库

发布时间:2016-12-3 3:57:13 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"我的面试库",主要涉及到我的面试库方面的内容,对于我的面试库感兴趣的同学可以参考一下。

算法题 公司现在的面试对算法要求很高,不妨开个贴,整理一下,弄出几个自己很熟悉又很有代表性的算法题,免得每次都要重新准备。 参考: http://blog.csdn.net/v_july_v/article/details/6543438 1. 有1000万条查询字符串记录,找出top 10 出现次数最多查询串。 用Hash Table 统计查询字符串出现次数,时间复杂度是O(N),详细:http://blog.csdn.net/v_july_v/article/details/6256463 用size为10的最大堆排序,找出Top 10,时间复杂度为N*logK,。 关于堆排序: http://www.benfrederickson.com/2013/10/10/heap-visualization.html http://en.wikipedia.org/wiki/Binary_heap 2. 对N个整数,寻找最小的K个整数 (例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。) 用部分排序+堆排序,http://blog.csdn.net/v_JULY_v/article/details/6370650 3. 设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N) 常规做法,时间复杂度是O(N*K), 用逆排序可以做到O(N)  http://blog.csdn.net/v_JULY_v/article/details/6322882 对N个元素,用N/2的时间就可以逆排序,空间上只需要一个额外存储。思路是不需要一个一个元素向右移动,只需要将数组的一半和另一半交换即可! Reverse(int* arr, int b, int e) {      for(; b < e; b++, e--)      {           int temp = arr[e];           arr[e] = arr[b];           arr[b] = temp;      } } 或者 for(int i=0;i<=N/2;i++) {      int t;         t=a[N-i];       a[N-i]=a[i];       a[i]=t; } 设计题 1. 如果让你设计一个数据库连接池,你将如何设计? 数据库SQL 有两张表,学生表 和 学生选课表, 写一条SQL统计所有学生的选课数,注意可能存在一门课程都没有选的情况。 考察点,left join 和 group by 完整SQL select s.id, sum(case when c.name is not null then 1 else 0 end) from student as s left join course as c on s.id = c.studentId group by s.id Java题 1. TBA 架构题 1. TBA

上一篇:1042. Shuffling Machine (20)-PAT
下一篇:【数值分析】迭代法解方程:牛顿迭代法、Jacobi迭代法

相关文章

关键词: 我的面试库

相关评论