黑马程序员技术交流社区
标题: 今天写了一些IO、多线程面试题分享下,还有三道求助 [打印本页]
作者: 张百振 时间: 2014-5-30 13:49
标题: 今天写了一些IO、多线程面试题分享下,还有三道求助
基础、面向对象:
三道求助,想不起来了:
1、你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
2、 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性
吗?
3、如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开始?
2:下面这个表达式,你移动一个数字或者符号就可以把这个表达式变成正确的.请试试.62-63=1方式一:把2和3互换位置方式二:在62中间加上^符号,表示2的6次方,64-63 = 13: 一栋房子需要一个工匠七天建成,这个工匠的工钱是一份金条,假如现在你需要盖一栋房子,而你只有一根完整的金条,怎么能把金条分三份的情况下每天都付给工匠工资,最后一天刚好付完? 先将第一天的七分之一切下,第一天完工后给工人;第二天切下两天的工资七分之二给工人,将第一天的七分之一换回来;第三天将七分之一金条再付给工人,手中剩有七分之四的金条;第四天将手中的七分之四的金条付给工人换回工人手中的七分之三的金条;第五天将手中的七分之一金条再付给工人;第六天将手中七分之二的金条付给工人换回工人手中七分之一的金条;第七天将手中金条全付给工人。面试题:1:谈谈final, finally, finalize的区别final:是一个状态修饰符,表示最终的意思,被final修饰的变量为常量,被 final修饰的方法不可以被重写,被final修饰的类不可被继承。finally:是异常处理try{}catch(){}finally{}体系的一部分,表示修饰的代码块 一定会被执行,除非在此之前JVM退出。finalize:是Object中的一个方法,表示垃圾回收,在垃圾回收器回收垃圾之 前调用该方法。2: &和&&的区别&:逻辑与,不管第一个表达式为真还是 假,都会再对第二个表达式 进行判断,效率比较低。&还可以用作位运算符,当&操作符两边的表达 式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一 个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f 的结果为0x01。&&:逻辑双与,如果第一个表达式为假,则直接判断假,不会再对第二个 表达式判断,效率比较高3: Math.round(11.5)等於多少? Math.round(-11.5)等於多少?Math.round(11.5) = 12;Math.round(-11.5) = 11;原因:该方法的原理是对参数进行+0.5再进行向下取整,第一个则为12,第 二个加上0.5为-11,再进行向下取整则为-11。4: short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?第一个s1 = s1 + 1在进行运算的时候会先将1自动提升为int类型,所以等 号右边结果为int类型,而将int赋值给short需要强转,否则报错。第二个没有错,因为+=运算符本身包含一个强制转换的过程5:数组有没有length()这个方法? String有没有length()这个方法?数组没有length()方法,它有的仅仅是length属性String有length()方法,该方法返回值为当前字符串对象的长度。6: Overload和Override的区别。Overload的方法是否可以改变返回值的类型?Overload:称为方法的重载,是在一个类中两个方法声明符合以下规则才是 方法重载,A、方法名相同参数列表不同,与返回值和访问修饰 符无关Override:称为方法覆盖,是在有继承或者实现关系的两个类的两个方法声 明符合以下规则,A、方法名、参数表必须相同 B、子类访问修饰符必须小于等于父类 C、返回值必须小于等于父类7:给我写出JDK提供的5个常用类名,5个接口名,5个包名.常用类名:String、System、ArrayList、StringBullder、HashSet常用接口:List、Set、Exception、InputStream、OutputStream常用包名:java.lang、java.util、java.io、java.math、java.sming8:构造方法是否可被override?不可以:因为构造方法的方法名必须和类名相同,所以一个类不可能有两个 不同的名字,即构造方法不可以被override9: try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?严格来说,在finally的return同时存在的情况下,finally代码里边是在两次return之间执行的,
第一次:当代码看到return的时候,返回路径已经生成,也就是这个时候返回的路径上不再是单单返回某一个变量了,而是一个具体的值,此时路径已经生成
但是:生成返回路径的一瞬间,系统又看到了finally,所以又去执行finally中的代码,此时,在finally中给变量赋值仅仅是变量值的改变,并不影响已经生成的返回的那个常量值
第二次:当执行完finally代码之后,系统会将之前生成的返回路径的那个常量值做返回操作
所以呢,finally语句是在两次return之间执行的10: 编程题: 用最有效率的方法算出2乘以8等於几?2 << 3因为计算机运算的是二进制,所以只需要将2左移三位即可,直接操 作二进制是最有效的方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |