这段时间校招的高峰期,参加了各种笔试。。感觉做多了题目好多都一样。在这个贴里贴一下我最近做过的一些笔试题,可能不全,或者说得有误的地方,毕竟题目是全凭映像记下来的。当然不是今天一天的咯。
1,TreeMap,HashMap,hashtable key和value的区别(是key和value的区别,不是他们的区别)。2,解释内部类与匿名内部类!3,XML JSON区别4,NoSQL是什么?5,解释 Ant,Maven,AOP,DI,BI,REST。------------------------------------------------------------
2013年10月20日 今天新浪Java系统工程师考试的几个题
6,Linux线程通信的方法又哪些?原理是啥?
7,动态语言像java,js存在内存泄露么?原理是什么?(可能描述不准)
8,有四条记录,两条重复的,如何去除重复记录在数据库表中。
(这个题特别求解)
1 a
2 a
3 b
4 b
如何删掉重复数据只留下1a,3b 或者2a,4b。9,用java 实现遍历树的广度优先。
10,用java实现重复字符串剔除,但顺序不变。
11,有一个数组,有一个数x,是否存在数组中两个数之和等于x。
-------------------------------------------------------------
12 JVM加载class文件的机制还有各种算法题。算法是我的硬伤,上次酷派考的题就是5道算法,卷子一发下来就像交卷了。。
这段时间在猛补算法,从最简单的二分法开始,对了上次考了一道 列出C盘test目录下的所有文件(这个知道要用递归,但是也忘记怎么做了) 算法不熟真是硬伤啊题目少,分数高。。各位还在学校的同学,好好补习一下算法和数据结构吧,笔试时真心有用Java笔试题
1,TreeMap,HashMap,hashtable key和value的区别(是key和value的区别,不是他们的区别)。2,解释内部类与匿名内部类!3,XML JSON区别4,NoSQL是什么?5,解释 Ant,Maven,AOP,DI,BI,REST。------------------------------------------------------------
2013年10月20日 今天新浪Java系统工程师考试的几个题
6,Linux线程通信的方法又哪些?原理是啥?
7,动态语言像java,js存在内存泄露么?原理是什么?(可能描述不准)
8,有四条记录,两条重复的,如何去除重复记录在数据库表中。
(这个题特别求解)
1 a
2 a
3 b
4 b
如何删掉重复数据只留下1a,3b 或者2a,4b。9,用java 实现遍历树的广度优先。
10,用java实现重复字符串剔除,但顺序不变。
11,有一个数组,有一个数x,是否存在数组中两个数之和等于x。
-------------------------------------------------------------
12 JVM加载class文件的机制还有各种算法题。算法是我的硬伤,上次酷派考的题就是5道算法,卷子一发下来就像交卷了。。
这段时间在猛补算法,从最简单的二分法开始,对了上次考了一道 列出C盘test目录下的所有文件(这个知道要用递归,但是也忘记怎么做了) 算法不熟真是硬伤啊题目少,分数高。。各位还在学校的同学,好好补习一下算法和数据结构吧,笔试时真心有用Java笔试题
第四题我还真不会,
第五题 Ant,DI,BI,REST。不懂。
第七题很有意思,我不确定,感觉不会存在,因为内容已经被java封装好了。我们并不是直接的去使用内存地址。。
http://www.cnblogs.com/qq78292959/archive/2011/07/25/2116123.html这篇文章讲的内存泄漏还挺好的。
这个不造轮子,用dos命令
dir /s/b c: >> c:\cross\files.txt
先取出,然后存入HashTable(把字母的那列作为K,数字作为V)……
第五题 DI就是MVC当中的IoC吧?
另外,同意LZ说法,算法和数据结构实在硬伤……
第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
其它题太多和数据结构有关了。
当然还有各种选择题就没有列出来了。。
第10题我想不出算法,就写了个把字符串一个个取出然后存到一个LinkedHashSet中,这样就自动帮我有序并且取出重复了多么蛋疼的回答啊。其实它应该是要考知不知道LinkedHashSet的实现原理吧。。
DI和AOP这两个我还是了解的
剩余的包含正面的个数为10-N
把那10枚反过来,那么包含正面的个数为10-N。
相等了。
剩余的包含正面的个数为10-N
把那10枚反过来,那么包含正面的个数为10-N。
相等了。
好吧 原来是这样的。题目也确实没说要5个正面向上。。
我以为一定要每堆都是5个正面向上,纠结了好久。。
(这个题特别求解)
1 a
2 a
3 b
4 b
如何删掉重复数据只留下1a,3b 或者2a,4b。select min/*max亦可*/(不重复字段) from table group by 所有重复字段这个就是把每个重复的数据保留了一份delete from table where 不重复字段 not in
( select min/*max亦可*/(不重复字段) from table group by 所有重复字段)
第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
其它题太多和数据结构有关了。
当然还有各种选择题就没有列出来了。。bi 是商业智能,类似大数据挖掘。REST是RESTful系统级别的API设计模式
Ant是打包工具,Maven是依赖包管理工具
Java有可能引起泄露的,比如你一直持有大对象,不释放,久而久之就会造成可用内存越来越少,当然java里不像c++里内存泄露那么简单,C++里一个野指针就会泄露,java还是有可能的,纯粹看写程序的人
第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
其它题太多和数据结构有关了。
当然还有各种选择题就没有列出来了。。Java调用C的API 造成的泄漏根本就不能算是java的泄漏。正确的答案是 使用静态容器,然后只add 没有remove
假如一个数组里面存放的是对象的引用,你可以向数组里删除和添加元素!
当你删除元素的时候只是做了 Arrays[size--] 而没有执行Arrays[size] = null的话
java垃圾回收机制是不会回收你“删除”的对象 因为它的引用并没有置空..
这种情况下你想想 是不是内存就泄露了?
第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
其它题太多和数据结构有关了。
当然还有各种选择题就没有列出来了。。bi 是商业智能,类似大数据挖掘。REST是RESTful系统级别的API设计模式
Ant是打包工具,Maven是依赖包管理工具
Java有可能引起泄露的,比如你一直持有大对象,不释放,久而久之就会造成可用内存越来越少,当然java里不像c++里内存泄露那么简单,C++里一个野指针就会泄露,java还是有可能的,纯粹看写程序的人
学习了
您懂得好多哈~有些概念还真没听说过。。
第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
其它题太多和数据结构有关了。
当然还有各种选择题就没有列出来了。。Java调用C的API 造成的泄漏根本就不能算是java的泄漏。正确的答案是 使用静态容器,然后只add 没有remove
原来是这样。 我的说法也只是网上看来的,感觉也说的有道理,但是并不知道到底是如何实现的。。非常感谢了~
您说的我有了解,也在李刚的疯狂Java一书中看到过,不过考试的时候忘记回答了。。非常感谢您的点醒。。
id name
1 a
2 b
3 a
4 b
delete T where name in (select name from T group by id having count(name)>1)第四题
static boolean isExistedSum(int num, int[] arr) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i : arr) {
if (!map.containsKey(i)) {
map.put(i, 1);
} else {
map.put(i, map.get(i) + 1);
}
}
for (int i : arr) {
int value = num - i;
if (map.containsKey(value)) {
if (num != 2 * value)
return true;
return map.get(value) == 2;
}
}
return false;
}
最后一个判断条件写错了,应该是>=2
static boolean isExistedSum(int num, int[] arr) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i : arr) {
if (!map.containsKey(i)) {
map.put(i, 1);
} else {
map.put(i, map.get(i) + 1);
}
}
for (int i : arr) {
int value = num - i;
if (map.containsKey(value)) {
if (num != 2 * value)
return true;
return map.get(value) >= 2;
}
}
return false;
}
for (int i = 0; i < 10; i++) {
s += s;
}String[] sb = new String[10000];
for (int i = 0; i < 10000; i++) {
s = s + i; //这里是(1),下面没注释的是(2),注释(1)运行(2)与注释(2)运行(1)
//正常理解最终sb数组里应该是一样的,但。。自己运行看吧。
//String b= String.valueOf(i); //(2)
String b = null;
if(i<10)
b = s.substring(s.length()-1);
else if(i<100)
b = s.substring(s.length()-2);
else if(i<1000)
b = s.substring(s.length()-3);
else if(i<10000)
b = s.substring(s.length()-4);
else
throw new RuntimeException();
sb[i]=b;
}你们说为什么?