java面试题大全

三. 笔试题之Java基础部分

基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他。有些题来自网上搜集整理,有些题来自传智播客学员面试后的反馈,说真的,少数一些网上的面试题,我真怀疑其是否还有存在价值!

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 

可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

2、Java有没有goto? 

正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的。Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。识别java语言的关键字,不要和其他语言如c/c++的关键字混淆。

Java 关键字列表 (依字母排序 共51组): 
abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while 
Java 保留字列表 (依字母排序 共14组) : Java保留字是指现有Java版本尚未使用 但以后版本可能会作为关键字使用。 
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var ,goto ,const,null

呵呵,不管别的,来几条题目先,作对了你牛^_^ 
  1, which of the following are keywords or reserved words in java? 
  a) if b)then c)goto d)while e)case f)sizeof 


  2, which of the following are java key words? 
  a)double b)Switch c)then d)instanceof 


  3, which of these are key words in java? 
  a) default b)NULL c)String d)throws e)long f)true 


  答案来了 1,acde 2,ad 3,adef 作对了吗^_^ 
  解释来了 1,then和sizeof都不是java的关键字,熟悉c或者c++,写惯了asp的高手就要小心喽。 
  2,所有的关键字都是小写的,所以Switch不是关键字。instanceof看上去像方法名,但其实是关键字; 
  3,大写的NULL不是java语言的关键字。String是java语言的一个封装类的类名,也不是关键字。  
  const和goto是java的保留字。friendly,sizeof不是java的关键字。

3、说说&和&&的区别。 

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)y不会增长.

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。 

备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。 

4、在JAVA中如何跳出当前的多重嵌套循环? 

在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号(记)label,所谓label,是个后面紧跟冒号的标示符。然后在里层循环体的代码中使用带有标号的break 语句(如(1)所示),即可跳出外层循环。例如,

  ok:
  	for(int i=0;i<10;i++)//外层循环
  	{
  		for(int j=0;j<10;j++)//内层循环
  		{
  			System.out.println(“i=” + i + “,j=” + j);
  			if(j == 5)
       break ok;//(1)会中断内层外层循环,回到ok标记处,终止一切循环进行
       continue ok;//(2)中断内层外层循环,回到ok标记处,循环从外层循环重新开始进行
             continue;//(3)终止本次循环,将执行点移到内层循环的起始处,开始下一次内层循环
       break;//(4)break会中断内层循环,回到外层循环,继续外层循环
  
  		}
  	} 


另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。

  int arr[][] = {{1,2,3},{4,5,6,7},{9}};
  boolean found = false;
  for(int i=0;i<arr.length && !found;i++)
  	{
  		for(int j=0;j<arr[i].length;j++)
  		{
  			System.out.println(“i=” + i + “,j=” + j);
  			if(arr[i][j]  == 5) 
  			{
  				found = true;
  				break;
  			}
  		}
  	} 

5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 

在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。 使用switch-case中最容易忽视的就是忘记在每个case后处理完后忘记写上break;语句。如果少了break;,便会执行其后接续的case语句,直到遇上break为止。

public class forInstance {
	public static void main(String[] args) {
		byte a = 2;
		switch (a) {
		case 1:
			System.out.println(" A ");
		case 2:
			System.out.println(" B ");
		case 3:
			System.out.println(" C ");
		case 4:
			System.out.println(" D ");
		default:
			System.out.println(" default ");
		}
	}
  }


=========输出结果为:

 B 

 C 

 D 

 default 

再看下面的程序段:

public static void main(String[] args) {
		byte a = 11;
		switch (a) {// C
		case 11:
			System.out.println(" 11 ");
			break;
		case 225:
			System.out.println(" 11 ");
			break;// D
		}
	}


该代码正确吗?答案是否定的。虽然在 C 处是合法的也即是byte型的a值可以出现在switch中,但是 D处的语句也即是第二个case后的值是225大小超过了byte的范围,所以是错误的225处编译错误)再就是case后的值不能出现重复。因此在使用中要注意。

什么Java byte 类型的取值范围是-128~127   ?

概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ,然 后 对 整个数 加 1

步骤:

1.确定byte是1个字节,也就是8位

2.最大的应该是0111 1111,因为第一位是符号位,0表示正数

3.最小的应该是1000 0000,同理,表示负数最小的(1111 1111是最大的负数-1)

4.0111 1111即127

5.1000 0000按照最下面的解释为先减一,得到0111 1111,然后按位取反得到1000 0000,该结果为欲求负数的绝对值,所以结果是-128(和概念反着来求出该负数)

=========================================================


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的别。由于各物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分问题:判断图像中的目标属于哪个别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分 基于深度学习的目标检测算法主要分为两大: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值