Java 面试题

1. 有一个集合a,里面有n个正整数,乱序排列。给定一个正整数N,求,a中任意两个数相加等于N,共有哪些种组合情况。例如,集合为{1,3,44,2,4,5,54,222,368} N=6,则结果集为{1,5},{2,4}

这个题网上有类似的



2. Treemap的实现。

各种集合类的结构和优缺点,大家都挺爱考的。以前做行业信息化,没什么感觉,但是如果很在意性能,搞清楚还是挺有用的。



3. 有两个很大的文件,每个文件中都有1亿行,每行一个整数。问这两个集合的交集是什么。给定的前提是机器内存不足以完全装入任意一个文件。

这个几乎是网上的原题了



4. 堆和栈的定义,堆和栈里面的对象,哪个运行速度快。

还问了一些衍生的问题,记不清了,只要看清楚java教材关于这方面的介绍足矣



5. 为了实现一个折线图,需要将数据存入一种数据结构,折线图横坐标是时间,纵坐标是值,经常的查询是按时间段进行查询,如select value from t where begin>’20110101’ and end<’20111212’ ,问,使用java中的那种数据结构比较好。

还是考java中的各种集合类,本质上是问各种数据结构在顺序/随机的读取/插入上的效率



6. 数据库的索引通常用什么数据结构实现?为什么用这种数据结构。

就知道是btree,但是btree是咋回事,为啥不能用其他tree或者别的结构,这个看过一篇帖子以后才明白。算是学习了。



7. 如果数据库中有2个表,表a字段为姓名、年龄,表b字段为姓名、单位。现在使用姓名字段做left join查询,假设姓名字段都有索引了。问数据库是怎么实现的。如果把这两个表看为在内存中的数组,要自己实现left join,怎么实现?

面试官看我实在不知道数据库里leftjoin怎么实现的,就让我自己实现一个内存中的,勉强答出来了吧,但是可能不太好。



8. 数据库各种事务隔离级别

这个是纯不记得了,以前工作中从来用不到,真是汗颜。



9. wait()方法和notify()方法干什么用的,wait()方法有什么使用限制,是哪儿都能用么?

对于一个从来不用多线程的人,这么简单的问题也变得有点儿难。只知道干什么用的,不知道有什么限制。


10. 数据库中有一个表有上亿的数据量,怎么优化?(主要是拆分,除了按业务拆分外,还有什么从技术角度的,可扩展性好的水平拆分方式)

思路是拆没错,但是面试官问的不是业务拆分策略,而是从技术上考虑。还得考虑扩展性,比如拆好以后,数据量增长迅速,又要拆了,怎么办。这个水平拆分策略有好多,网上能搜到。但是我说的都不是很有体系,以前没弄过,都是现场想。。

你可能感兴趣的:(JAVA)