算法题
公司现在的面试对算法要求很高,不妨开个贴,整理一下,弄出几个自己很熟悉又很有代表性的算法题,免得每次都要重新准备。
参考: 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
left join、right join、inner join的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
Java题
1. HashSet HashTable 和 HashMap 的区别
HashSet实现了Set接口,它不允许集合中有重复的值,要先确保对象重写equals()和hashCode()方法
HashMap中怎样处理hash冲突的? HashTable 是线程安全的,HashTable不接受null的key和value
2. web container中加载执行servlet的过程? web.xml中配置,然后init() --> get() / post() --> destroy(),其是不是线程安全的? volatile 这个关键字的作用(对变量进行同步操作)
3. String和StringBuffer的区别,衍生到immutable class,immutable的好处(线程安全,安全的参数传入,减少内存消耗),如何实现immutable class.
4. JVM的类加载机制是怎样的?
bootstrap
classloader load 核心库
|
extension classloader load jre/lib/ext
|
system classloader load -classpath 指定的jar包或类路径
http://www.blogjava.net/lhulcn618/archive/2006/05/25/48230.html
5. Java的内存模型? 你碰过几种outOfMemory的错误,都是由什么原因造成的? permgen, heap space, thread stack
参考 http://www.cnblogs.com/windlaughing/archive/2013/05/27/3101650.html
设计题
什么是观察者模式
架构题
1. 什么是RESTFul架构
2. 谈谈你理解的分布式系统架构
版权声明:本文为博主原创文章,未经博主允许不得转载。