2017java面试_2017 Java面试大全(一)
2017 Java面试大全(一)
1. 一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以包括多个类,但是只有一个public的类,并且,这个public的类名必须和文件名相同。
2.Java有没有goto?
Java的保留字,现在还没有在Java中使用。
3.&与&&的区别。
&和&&都可以用作逻辑与的运算符,表示逻辑与(and)。当且仅当运算符两侧表达式都为true时,运算结果为true;若两侧有任一表达式为false,运算结果都为false。
&&运算符具有短路功能,即当第一个表达式的值为false时,将不再对第二个表达式进行判断。比如:if(str != null && str.equals("")),当str 为 null 时,前面表达式为false,将不会再执行后边的表达式,也就不会抛出空指针异常;但是对于if(str != null & str.equals(""))表达式,则会对两个表达式都进行判断而抛出空指针异常;
&还可以用作按位与的运算符,表示按位与。当运算符两侧的表达式的值不是bool类型时,&表示按位与操作。我们通常会使用0x0f来按位与一个整数,从而获得该整数的最低4个bit位。例如:0x31&0x0f的结果为0x01。
4.在Java中如何跳出当前的多重嵌套循环?
在Java中,跳出多重嵌套循环,一般有两种方法;一种是通过在外层循环定义一个标号,然后在内层用使用了该标号的break语句,即可跳出循环; 另一种方法则是定义一个flag标志来控制每一层循环的条件,通过内层控制该flag的值(true or false)来跳出循环。代码示例如下:
// 方法一:
1 ok:2 for (int i = 0; i < 100; i++){3 for (int j = 0; j < 100; j++){4 for (int k = 0; k < 100; k++){5 if (k == 5)6 breakok;7 }8 }9 }
// 方法二:
1 bool flag = true;2 for (int i = 0; i < 100 && flag; i++){3 for (int j = 0; j < 100 && flag; j++){4 for (int k = 0; k < 100 && flag; k++){5 if (k == 5)6 flag = false;7 }8 }9 }
5.switch语句能否作用在byte上?能否作用在long上?能否作用在String上?
在switch(value)中,value只能是整型表达式或枚举常量,其中,整型表达式可以是int基本类型或Internet包装类型。因为byte,short,char可以隐式转换为int,所以这些类型及其包装类型都可以作为switch的值;但是long,String不可以隐式转换为整型,不符合switch语句的语法规范,所以不能用于switch语句。
6.short s1 = 1; s1 = s1 + 1; 有什么错? shor s1 = 1; s1 += 1; 有什么错?
由于s1 + 1在计算时会自动提升表达式的类型,计算结果为int型,而int不能隐式转换为short,当把结果再赋给short类型的s1时,编译器将会报强制类型转换的错误; 而对于s1 += 1, += 是Java语言规定的运算符,Java编译器会对他进行特殊处理,将不会有任何错误,可以正常编译。
7.char型变量中能否存储一个中文汉字?为什么?
char型变量存储的是Unicode编码的字符,而汉字是Unicode编码的,所以char型变量中当然可以存储汉字。但是对于一些特殊的汉字可能没有被Unicode编码包含,那么这些字符不能存储在char型变量中。另外,Unicode编码占两个字节,所以,char型变量也占两个字符。
8.用最有效率的方法算出2乘以8等于几?
2<<3;
将一个数左移n位,就相当于这个数乘以了2的n次方;2乘以8就等于2乘以2的3次方,也就是2<<3;并且移位运算直接由cpu支持,所以效率最高。
9.请设计一个一百亿的计算器(本题非个人整理)
首先,计算机中用固定数量的几个字节来存储的数值,所以计算机中能够表示的数值是有一定的范围的,为了便于讲解和理解,我们先以byte 类型的整数为例,它用1个字节进行存储,表示的最大数值范围为-128到+127。-1在内存中对应的二进制数据为11111111,如果两个-1相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,11111110,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为11111110,也就是-2,这正好利用溢位的方式实现了负数的运算。-128在内存中对应的二进制数据为10000000,如果两个-128相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,00000000,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为00000000,也就是0,这样的结果显然不是我们期望的,这说明计算机中的算术运算是会发生越界情况的,两个数值的运算结果不能超过计算机中的该类型的数值范围。由于Java中涉及表达式运算时的类型自动提升,我们无法用byte类型来做演示这种问题和现象的实验,大家可以用下面一个使用整数做实验的例子程序体验一下:
int a = Integer.MAX_VALUE;
int b = Integer.MAX_VALUE;
int sum = a + b;
System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);
先不考虑long类型,由于int的正数范围为2的31次方,表示的最大数值约等于2*1000*1000*1000,也就是20亿的大小,所以,要实现一个一百亿的计算器,我们得自己设计一个类可以用于表示很大的整数,并且提供了与另外一个整数进行加减乘除的功能,大概功能如下:
(1)这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数
(2)有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中
(3)提供加减乘除的功能
1 public classBigInteger{2
3 intsign;4
5 byte[] val;6
7 publicBiginteger(String val) {8
9 sign =;10
11 val =;12
13 }14
15 publicBigInteger add(BigInteger other) {16
17
18
19 }20
21 publicBigInteger subtract(BigInteger other) {22
23
24
25 }26
27 publicBigInteger multiply(BigInteger other){28
29
30
31 }32
33 publicBigInteger divide(BigInteger other){34
35
36
37 }38
39
40
41 }
10.使用final关键字修饰一个变量时,是引用变量不能变,还是引用的对象不能变?
使用final关键字修饰一个变量时,是引用变量不能变,而引用变量所指向的对象中的内容可以改变。举个例子来说:final StringBuffer a = new StringBuffer("aaa");
对于语句 a = new StringBuffer("");执行时编译器将会报告错误;但是对于语句 a.append("bbb");则可以编译通过。
今天的经验就到这里,请关注小李后续的文章,将会奉上更多的经验!
版权所有,允许转载,转载请注明出处,侵权必究!
2017java面试_2017 Java面试大全(一)相关推荐
- 面试系列-Java面试总则
Java基础 1.Map.Set.List集合差别及联系详解 2.HashSet类是如何实现添加元素保证不重复的 3.HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安 ...
- (Java面试)Java面试越来越难,不加油卷起来,怎么拿到大厂offer!!
前言 最近看到一则很现实的故事:陆路最近心态很崩.和他同期一道进公司的陈琪又升了一级,可是明明大家在进公司时,陈琪不论是学历还是工作经验,样样都不如自己,眼下不过短短的两年时间便一跃在自己的职级之上, ...
- java高级开发工程师面试,java面试简历系统
Kafka宕机引发的高可用问题 问题要从一次Kafka的宕机开始说起. 笔者所在的是一家金融科技公司,但公司内部并没有采用在金融支付领域更为流行的RabbitMQ,而是采用了设计之初就为日志处理而生的 ...
- 【面试】Java面试常见问题汇总(不含答案)、面试指导学习笔记
面试常见问题角度 String是基本数据类型吗? int和Integer有什么区别? HashMap和HashTable的区别,及其实现原理. ArrayList/HashMap的源码.如何实现源码 ...
- java数据结构与算法面试,java面试手写代码
前言 总有一天你会明白,你的努力终究没有白费 年前辞职,人算不如天算,突如其来的疫情完全把自己的计划给打碎了,面试难度简直不亚于一场江苏高考题,后悔.焦虑不安.失眠成了我的生活状态. 从三月底开始投递 ...
- java基础面试,java面试评价表评语
前言 当你准备跳槽面试的时候,明明只是一份15K的工作,却问你会不会多线程,懂不懂高并发,火箭造得让你猝及不防,结果就是两个字--凉凉!而在如今的市场,什么多线程.高并发.分布式.负载均衡.集群.微服 ...
- 2022面试,Java面试项目推荐,15个项目吃透两个offer拿到手软
项目名称:JeeSite 项目所用技术栈:Spring.Spring MVC.MyBatis.Apache Shiro.Bootstrap UI等 项目简介:JeeSite 是一个 Java EE 企 ...
- Java高级开发面试,Java面试没有项目经验
技术焦虑 现在的技术圈子很火热,任何技术点,任何知识,只要你肯搜索,都能找到资料.但是现在技术圈确实有一个不好的地方,就是贩卖焦虑.这种贩卖焦虑的点并不在于形式,而是一种普遍的心态.特别是对于那种知识 ...
- 【面试】JAVA面试基础知识总结
1.==和equals的区别 == 如果比较基本类型,比较的是值 == 如果比较引用类型,比较的是内存地址 equlas是Object类的方法,本质上与==一样,但是有些类重写了equals方法,比如 ...
最新文章
- 《陶哲轩实分析》引理17.2.4证明_导数的唯一性
- strstr c语言字符串,C字符串处理strstr, strindex
- 1001种玩法 | 1001种玩法--数据存储(2)
- 为什么大家都只谈薪资,却不谈梦想?
- android 监听安装来源_Android编程监听APK安装与删除等过程的方法
- 有规律字段拆分(2005的解决方案)
- 哈希表存在的问题及解决方案
- Sublime Text 使用介绍、全套快捷键及插件推荐
- Super Jumping! Jumping! Jumping! 最长上升子序列+DP
- Sass--伪类嵌套
- response.contenttype
- npm ERR! code EINTEGRITY 解决方案
- .net pdf转图片_如何将PDF转图片?PDF转图片免费方法!
- 乌班图16.04网卡驱动安装
- db2 正则匹配_SQL正则表达式
- 2007-2018年软考高级之系统分析师真题及答案解析
- ai面试的优缺点_被AI程序面试是一种怎样的体验?该如何准备!!!
- 阿辉,Bullet In The Head
- html的网页主题标记是什么,html标记是什么
- 用SSD也是一种性能提升手段
热门文章
- BI与大数据之间的差距有哪些
- 大数据分析平台在企业的重要性
- 浙大计算机科学与技术FPGA,Computer Science 计算机科学与技术系 重要国际学术会议...
- AcWing 860. 染色法判定二分图(染色法)
- Spark分组取TopN
- 机器学习模型可解释性进行到底——特征重要性(四)
- Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
- DevOps:软件架构师行动指南2.2 云的特性
- 如何设置dedecms自定义表单必填项?
- 开源代码motion