首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java 年薪20W 务须会的几道题

2013-12-13 
java 年薪20W 必须会的几道题Java 今天看某位仁兄发的面试题,说这是他面试年薪20W的java职位。int/long 的

java 年薪20W 必须会的几道题
Java 今天看某位仁兄发的面试题,说这是他面试年薪20W的java职位。

int/long 的二进制位数,jvm 是否在不同平台 int/long 的二进制位数是否相同
对于 StringBuilder,每次追加一个字符,当其长度长到 n 时,时间复杂度是多少
能否把一个 String 对象,添加到一个 List<Integer> 中
Comparable 和 Comparator 有何区别,如何把非 Comparable 的对象作为 TreeMap 的 Key
GC 的基本原理(大部分人的回答是调节 gc 参数)
目前还没碰到一个人能回答第 4 个问题!呜呼!

大家可以给出详细答案。各抒己见 Java?基础题
[解决办法]
20W是日元啊?

第一个int4byte long8byte, 不考虑内存对齐和数据压缩的话,所有JVM一样。
第二题是扯淡,一个字符可能是2byte可能是4byte,每次加长的字节数都不一样,没法精确计算复杂度。
此外复杂度计算的前提也没说,没定义复杂度为1的基本操作,怎么计算复杂度?
第三题,可以,强转。java5前没泛型。
第四题,一个是接口,一个是抽象类,TreeMap构造器可以指定Comparator。
第五题,GC依赖JVM实现,标记法,计数法,搜索可达性法都是办法。

我是不是该找老板谈谈,给我涨到200W?
[解决办法]
第三个不可以将String对象强转为Integer就可以了吗?令我觉得jvm在所有平台的兼容性来说,第一题的位数应该是一样的。小白路过。。。
[解决办法]
说实在的,这些其实都只是打着20W的鳌头而已,去面试一般不会被问到这个的。。
20W对我来说确实很高,不过阿里的客服都20W了。。
第一题不同吧,具体机制我看过,但是没仔细看,int好像在不同位数的机器上位数不同。
第二题真不会,很少看源码,懒得缘故。
第三题把String转化为ASCCI码来存就行了。
第四个一个类是借口在类内部重写方法,一个单独类进行排序。
第五题百度的答案肯定比我回答的强多了,我的理解就是人家写好的东西,在确定你的对象不需要时去主动回收其内存。

[解决办法]

引用:
20W是日元啊?

第一个int4byte long8byte, 不考虑内存对齐和数据压缩的话,所有JVM一样。
第二题是扯淡,一个字符可能是2byte可能是4byte,每次加长的字节数都不一样,没法精确计算复杂度。
此外复杂度计算的前提也没说,没定义复杂度为1的基本操作,怎么计算复杂度?
第三题,可以,强转。java5前没泛型。
第四题,一个是接口,一个是抽象类,TreeMap构造器可以指定Comparator。
第五题,GC依赖JVM实现,标记法,计数法,搜索可达性法都是办法。

我是不是该找老板谈谈,给我涨到200W?

第二题 java字符类型的长度是固定的,你说长度不一样的是字符串类型
第三题如果在java5及以上声明了List<Integer>你放进去给我看看,能放进去的叫List
第四题,两个都是接口,类要实现compareble接口才可以作为TreeMap的key
你应该找老板给你涨到2000W的

[解决办法]
引用:
Quote: 引用:

20W是日元啊?

第一个int4byte long8byte, 不考虑内存对齐和数据压缩的话,所有JVM一样。
第二题是扯淡,一个字符可能是2byte可能是4byte,每次加长的字节数都不一样,没法精确计算复杂度。
此外复杂度计算的前提也没说,没定义复杂度为1的基本操作,怎么计算复杂度?
第三题,可以,强转。java5前没泛型。
第四题,一个是接口,一个是抽象类,TreeMap构造器可以指定Comparator。
第五题,GC依赖JVM实现,标记法,计数法,搜索可达性法都是办法。

我是不是该找老板谈谈,给我涨到200W?

第二题 java字符类型的长度是固定的,你说长度不一样的是字符串类型
第三题如果在java5及以上声明了List<Integer>你放进去给我看看,能放进去的叫List
第四题,两个都是接口,类要实现compareble接口才可以作为TreeMap的key
你应该找老板给你涨到2000W的


第二题,char是char 字符是字符两个概念, 你加个基本平面外的中文字符或者波兰文字符试试。
说明你脑子里根本没有UTF-16的概念。也分不清UTF-8,UTF-16,GBK,ISO8895-1,ISO8895-12.

第三题,说明你不懂泛型,更不懂什么叫编译期类型检查和泛型擦除。

List<String> list = new ArrayList<>();
((List)list).add(new Integer(100));


第四题,好吧,我记错了,两个都是接口,Comparator 多个equals()方法。
但是TreeMap构造器可以指定Comparator。
public TreeMap(Comparator<? super K> comparator)

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

20W是日元啊?

第一个int4byte long8byte, 不考虑内存对齐和数据压缩的话,所有JVM一样。
第二题是扯淡,一个字符可能是2byte可能是4byte,每次加长的字节数都不一样,没法精确计算复杂度。
此外复杂度计算的前提也没说,没定义复杂度为1的基本操作,怎么计算复杂度?
第三题,可以,强转。java5前没泛型。
第四题,一个是接口,一个是抽象类,TreeMap构造器可以指定Comparator。
第五题,GC依赖JVM实现,标记法,计数法,搜索可达性法都是办法。

我是不是该找老板谈谈,给我涨到200W?

第二题 java字符类型的长度是固定的,你说长度不一样的是字符串类型
第三题如果在java5及以上声明了List<Integer>你放进去给我看看,能放进去的叫List
第四题,两个都是接口,类要实现compareble接口才可以作为TreeMap的key
你应该找老板给你涨到2000W的


第二题,char是char 字符是字符两个概念, 你加个基本平面外的中文字符或者波兰文字符试试。
说明你脑子里根本没有UTF-16的概念。也分不清UTF-8,UTF-16,GBK,ISO8895-1,ISO8895-12.

第三题,说明你不懂泛型,更不懂什么叫编译期类型检查和泛型擦除。

List<String> list = new ArrayList<>();
((List)list).add(new Integer(100));


第四题,好吧,我记错了,两个都是接口,Comparator 多个equals()方法。
但是TreeMap构造器可以指定Comparator。
public TreeMap(Comparator<? super K> comparator)

new List<Integer>()
new List()
的概念能一样么?List原生类型加上自动装箱放什么不行?List<Integer>是Integer的列表的意思,不是你new List().add(new Integer())[/code]它就叫List<Integer>,放个String叫它List<String>也行啊。
[解决办法]
引用:
Quote: 引用:

20W是日元啊?

第一个int4byte long8byte, 不考虑内存对齐和数据压缩的话,所有JVM一样。


第二题是扯淡,一个字符可能是2byte可能是4byte,每次加长的字节数都不一样,没法精确计算复杂度。
此外复杂度计算的前提也没说,没定义复杂度为1的基本操作,怎么计算复杂度?
第三题,可以,强转。java5前没泛型。
第四题,一个是接口,一个是抽象类,TreeMap构造器可以指定Comparator。
第五题,GC依赖JVM实现,标记法,计数法,搜索可达性法都是办法。

我是不是该找老板谈谈,给我涨到200W?


第二题 java字符类型的长度是固定的,你说长度不一样的是字符串类型
第三题如果在java5及以上声明了List<Integer>你放进去给我看看,能放进去的叫List
第四题,两个都是接口,类要实现compareble接口才可以作为TreeMap的key
你应该找老板给你涨到2000W的
第三题:java的泛型只是语法糖,可以用反射把String放过去的。代码如下:
public static void main(String[]strs) throws Exception{
List<Integer> list = new ArrayList<Integer>();
Class clazz = list.getClass();
Method addMethod = clazz.getMethod("add", new Class[]{Object.class});
addMethod.invoke(list, new Object[]{"I'm String"});


System.out.println(list.size()); //结果为1

//测试取出
Method getMethod = clazz.getMethod("get", new Class[]{int.class});
String result = (String) getMethod.invoke(list, new Object[]{0});
System.out.println(result); //

}
[解决办法]
楼上的好几位都是大牛,小弟自惭形秽,在此膜拜了!java 年薪20W 务须会的几道题
“路漫漫其修远兮,吾将上下探索而求之!”编程之路何其慢长,感觉自己要学习的地方太多了,向各位大牛学习!
[解决办法]
引用:
几道题就 GC 是难点。
泛型的那个其实只要知道 Java 泛型的特点就可以知道:
List<Integer> listI = new ArrayList<>();
listI.add(Integer.valueOf(100));
List listO = (List) listI;
listO.add(new Object());
List<String> listS = (List<String>) listO;
listS.add("Test");
System.out.println(listI.get(2));



List<Integer> listI = new ArrayList<>();

第一句能这样写吗?很明显的错误。你运行一下,看能不能取出Test。
[解决办法]
引用:

List<Integer> listI = new ArrayList<>();

第一句能这样写吗?很明显的错误。你运行一下,看能不能取出Test。


这是 JDK 7.0 的写法。

热点排行