面试题二

x和y是double,则表达式x=2,y=x+3/2的输出是(3.00000)

y=2+1=3,因为是double有小数

算式3<<2|3的结果是(15)

3的二进制是11,<<是左移2位,1100,
3的二进制是0011,进行或运算 得到是1111
结果是15

已知int a=0x122,则a/2为(145)

0x122 的十进制是 116幂2+216+2=256+34=290,则a/2=145;

###8位有符号二进制数11100101代表的十进制数为(-27)

首位是代表符号,1代表负数,其它位1100101的运算公式 1*2幂(-6)+2幂5+2幂2+1=-64+32+4+1=-27

关于时间复杂度的说法

冒泡排序法的平均时间复杂度为O(n^2)
二分法的平均时间复杂度度是O(logn),好于顺序表查找的O(n).
快速排序法的最坏的情况下时间复杂度等于冒泡排序法,都为O(n^2)

将数组(7-6-3-5-4-1-2)按照堆排序进行升序,第一轮结束是(6-5-3-2-4-1-7)

在这里插入图片描述

对于二分查找法,下面描述正确的是

二分查找首先要求数据是有序的,同时要求能随机访问数据元素, 有序数组可以, 链表不行,

二分查找因为每次都是从中间点开始查找,所以最坏情况是目标元素存在于最边缘的情况。最坏为O(LogN)

元素3,1,2依次放入一个栈,顺序取出的结果是(2,1,3)

设计一个判别表达式中左右括号是否配对,采用(栈)结构最佳

在掩码为255.255.224.0条件下,下面那些IP地址属于同一个网段()

224 二进制 11100000
235 11101011
246 11110110
三为111一致所以同网段

UML动态视图:面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) 。

对于方法覆盖说法正确的是

方法的覆盖发生在子类型中
方法名一定要一样
参数一定要一样

java疯狂讲义中说重写返回值类型要比父类小,在eclipse中验证,重写返回值类型必须一致,那么Java重写返回值类型必须一样吗?

java 5或者以前,必须一样,java 7 java 8可以不同,但是必须是父类返回值的派生类。

Java重写要求子类跟父类的修饰符一样吗?

子类重写父类的方法的访问修饰符,不能低于父类的方法访问权限;

MARK一下,方法覆盖(区别于方法重载,在一个类中的是重载)

1.“两小” :子类方法的返回值类型、抛出的异常 均应小于等于父类方法的
2.“两同”:子类方法的方法名、参数列表均应该与父类方法相同
3.“一大”:子类方法的访问权限应该大于等于父类方法的访问权限

首先要强调,静态方法是不能被覆盖的。

原因:
在子类中,可以定义与父类同名的静态方法,不过并不存在“多态”,严格的说,方法间没有多态就不能称作“覆盖”。所以说,子类的静态方法,并没有覆盖父类的方法。

package com.ren.staticTest;
 
public class StaticExtends {
 
	public static void main(String[] args) {
		Father son = new Son();	//声明为Father类,son1静态方法和Father类绑定
		son.method();
		son.staticMethod();	
		
		Son son2 = new Son();
		son2.method();
		son2.staticMethod();
	}
}
 
class Father{
	
	void method(){
		System.out.println("父类方法");
	}
	
	static void staticMethod(){
		System.out.println("父类静态方法");
	}
}
 
class Son extends Father{
	
	void method(){
		System.out.println("子类方法");
	}
	
	static void staticMethod(){
		System.out.println("子类静态方法");
	}
}

关于程序编译说法正确的是

java编译出来的目标文件与具体操作系统无关
jvm可以有不同实现.低版本不一定能执行高版本的
java语言是混合型语言,会把java程序编译成字节码指令运行

编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。像C/C++等都是编译型语言。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等
解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等
Java不同于一般的编译语言和直译语言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性, 所以说java是一种解释型的语言

对于构造方法( constructor )描述正确的有

构造方法没有返回类型
如果我们没有显示定义构造方法,系统会提供一个缺省的

以下为java保留的不能作为类名和方法名使用的是

default implement throws

下面写法能在 java8 中编译执行

dir.listFiles((File f)->f.getName().endsWith(“.Java”));

dir.listFiles( f->f.getName().endsWith(“.Java”));

Lanbda表达式的主要作用就是代替匿名内部类的繁琐语法, 它由三部分组成:
(1) 形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。
(2) 箭头(→)。必须通过英文中画线和大于符号组成。
(3)代码块。如果代码块只包含一条语句,Lambda表达式允许省略代码块的花括号,那么那条语句就不要用花括号表示语句结束。Lambda代码块只有一条return语句,甚至可以省略return关键字。Lambda表达式需要返回值,而它的代码块中仅有一套省略了return的语句。Lambda表达式会自动返回这条语句的值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值