锁定老帖子 主题:一个java面试题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-06-19
kidding87 写道 不知道这个题目要考的什么。。。
没有内存,基本什么都干不了,猜测题目可能要的是下面的这个? static void change(){ String str = new String("a a b c j iz c q cc dd"); try { Field f_value = str.getClass().getDeclaredField("value"); Field f_count = str.getClass().getDeclaredField("count"); f_value.setAccessible(true); f_count.setAccessible(true); int count = f_count.getInt(str); char[] chars =(char[])f_value.get(str); for(int i=0;i<chars.length;i++){ while(chars[i]==' '){ for(int j=i+1;j<chars.length;j++){ chars[j-1]=chars[j]; } count--; } } f_count.setInt(str, count); System.out.println(str); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } 连内存都放不下的字符串,你确定 int 不会溢出? |
|
返回顶楼 | |
发表时间:2012-06-19
ray_linn 写道 kidding87 写道 不知道这个题目要考的什么。。。
没有内存,基本什么都干不了,猜测题目可能要的是下面的这个? static void change(){ String str = new String("a a b c j iz c q cc dd"); try { Field f_value = str.getClass().getDeclaredField("value"); Field f_count = str.getClass().getDeclaredField("count"); f_value.setAccessible(true); f_count.setAccessible(true); int count = f_count.getInt(str); char[] chars =(char[])f_value.get(str); for(int i=0;i<chars.length;i++){ while(chars[i]==' '){ for(int j=i+1;j<chars.length;j++){ chars[j-1]=chars[j]; } count--; } } f_count.setInt(str, count); System.out.println(str); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } 连内存都放不下的字符串,你确定 int 不会溢出? 题目估计你没有看清楚。。。它可是说的“基本” 虽然题目可能没有解,但至少要积极去应对,还不是丢一句 破题 吧 |
|
返回顶楼 | |
发表时间:2012-06-19
楼主非常随意的敲打了几下键盘,抛出一个凭借并不深刻的记忆写出一个描述并不准确的题目。
大家这么认真干什么, 让这个帖沉了吧,别回了。 |
|
返回顶楼 | |
发表时间:2012-06-19
ThinkingQuest 写道 楼主非常随意的敲打了几下键盘,抛出一个凭借并不深刻的记忆写出一个描述并不准确的题目。
大家这么认真干什么, 让这个帖沉了吧,别回了。 这位兄台,我看您才是非常随意的敲几下键盘吧?楼主的这个面试题是算法与数据结构里面,线性表中一个经典题的改版而已。还是多分析分析问题,少发牢骚吧 |
|
返回顶楼 | |
发表时间:2012-06-19
最后修改:2012-06-19
ray_linn 写道 cttnbcj 写道 ray_linn 写道 C 里因为可以使用MEM MOVE 出这个题目才有意义吧。Java 中,从头读到尾,非空就写到文件里好了,文件又不占内存。
打开文件难道不占内存吗?求波解 你不会用 Console 直接print出来,用管道获取。。连文件操作都免。 java XXXX.class > save.txt 这种题叫挫题。 哎。你连题目意思都没明白的,内存满了,说明这个字符串很长,说明不能分配内存了,何谈console.print ,你以为开个console不需要分配内存吗?console.print调用的是系统进程csrss(nt下)来显示,没内存了怎么分配? |
|
返回顶楼 | |
发表时间:2012-06-19
cttnbcj 写道 ray_linn 写道 cttnbcj 写道 ray_linn 写道 C 里因为可以使用MEM MOVE 出这个题目才有意义吧。Java 中,从头读到尾,非空就写到文件里好了,文件又不占内存。
打开文件难道不占内存吗?求波解 你不会用 Console 直接print出来,用管道获取。。连文件操作都免。 java XXXX.class > save.txt 这种题叫挫题。 哎。你连题目意思都没明白的,内存满了,说明这个字符串很长,说明不能分配内存了,何谈console.print ,你以为开个console不需要分配内存吗?console.print调用的是系统进程csrss(nt下)来显示,没内存了怎么分配? 内存没满,说的是基本。但就“基本”这两个字可以看出,是要在空间复杂度很小的算法来解决。上面我的回复有分析了 |
|
返回顶楼 | |
发表时间:2012-06-19
最后修改:2012-06-19
cttnbcj 写道 ray_linn 写道 cttnbcj 写道 ray_linn 写道 C 里因为可以使用MEM MOVE 出这个题目才有意义吧。Java 中,从头读到尾,非空就写到文件里好了,文件又不占内存。
打开文件难道不占内存吗?求波解 你不会用 Console 直接print出来,用管道获取。。连文件操作都免。 java XXXX.class > save.txt 这种题叫挫题。 哎。你连题目意思都没明白的,内存满了,说明这个字符串很长,说明不能分配内存了,何谈console.print ,你以为开个console不需要分配内存吗?console.print调用的是系统进程csrss(nt下)来显示,没内存了怎么分配? Console是静态类吧....如果连Console都调用不出来那请问什么可以调用?玩屁. Java 再怎么占内存,也影响不到CSRSS好不,大家在不同的进程空间里。 |
|
返回顶楼 | |
发表时间:2012-06-19
一个char可是16字节的
用来存字母,它利用的空间很少 String 对象里面还有hash这个变量 这个变量也可以拿来做零时变量用着 方法还是有的 |
|
返回顶楼 | |
发表时间:2012-06-19
ray_linn 写道 cttnbcj 写道 ray_linn 写道 cttnbcj 写道 ray_linn 写道 C 里因为可以使用MEM MOVE 出这个题目才有意义吧。Java 中,从头读到尾,非空就写到文件里好了,文件又不占内存。
打开文件难道不占内存吗?求波解 你不会用 Console 直接print出来,用管道获取。。连文件操作都免。 java XXXX.class > save.txt 这种题叫挫题。 哎。你连题目意思都没明白的,内存满了,说明这个字符串很长,说明不能分配内存了,何谈console.print ,你以为开个console不需要分配内存吗?console.print调用的是系统进程csrss(nt下)来显示,没内存了怎么分配? Console是静态类吧....如果连Console都调用不出来那请问什么可以调用?玩屁。 静态针对的是jdk 假如分配了100M,调用静态类不需要jdk额外增加内存,但是jdk,只是封装了console,调用的黑黑的框,除非是jdk静态类是操作桌面屏幕直接在JDK中实现的,否则肯定要去操作系统层面,内存没了,你到系统层面调用,马上卡死。 |
|
返回顶楼 | |
发表时间:2012-06-19
kidding87 写道 一个char可是16字节的
用来存字母,它利用的空间很少 String 对象里面还有hash这个变量 这个变量也可以拿来做零时变量用着 方法还是有的 char是两字节,兄台。。。而且java的String对象相当于一个char[]数组 |
|
返回顶楼 | |