迈进java初中级程序员分水岭是否合格?十个题告诉你!
前言
不论你是职场新人还是步入职场N年的职场新人大哥大当然这个N<3,我能担保你答不对这十个题不要问我为什么这么自信,这些个题还是“有水平”的javase
的基础题,传闻小白指定鸭蛋分,一测一个准,哈哈。
作为将来要成为架构师的男人,对,你没看错,就是在说你 皮一下很开森 ,what?你是小白?我顶你个肺,我叫声杠精,你敢应吗,那个代号9527的杠精,说你呢快快来答题,看你能答对几道题。
题一
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
short s = 1;
s=s+1;
System.out.println(s);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析: s = s + 1
计算结果被提升为int
类型,再向short
类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型,所以这个程序会报错编译失败。
题二
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
short s = 1;
s+=1;
System.out.println(s);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析: s += 1
逻辑上看作是 s = s + 1
计算结果被提升为int类型,再向short
类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型。但是, s=s+1
进行两次运算 , +=
是一个运算符,只运算一次,并带有强制转换的特点, 也就是说 s += 1
就是 s = (short)(s + 1)
,因此程序没有问题编译通过,运行结果是2
.
到这里,两个都错了的自觉点给楼主文章右上角点个赞,鸭!恭喜获得第
N+1
个准确无疑的天真小白荣誉勋章,千万别嫌弃,就像侠岚风语咒里说的:只要心怀正义,侠岚无处不在!所以我只想表达的是,天真小白荣誉勋章也是勋章。hhhhhh, 哎哎哎,别打...别打...别打脸.
题三
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
byte b1=1;
byte b2=2;
byte b3=1 + 2;
byte b4=b2 + b3;
System.out.println(b3);
System.out.println(b4);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析: b3 = 1 + 2
, 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac
),已经确定了 1+2
的结果并没 有超过byte
类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2
是正确的。 反之, b4 = b2 + b3
, b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac
不确定b2+b3
的结果是什 么,因此会将结果以int
类型进行处理,所以int
类型不能赋值给byte
类型,因此编译失败。
题四
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
short s = 32767;
s = (short)(s + 10);
System.out.println(s);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析:定义s为short
范围内最大值 (2^15) - 1 = 32767
,运算后,强制转换(int
换为short
),砍掉2个字节后会出现不确定的结果,因为这个值以及超出了short
类型数据的范围,从而变成负数结果-32759
到这里,四个题都错了的自觉点给楼主文章右上角点个赞,还有小白同学千万别灰心,想当年楼主刚学java的时候,在腾讯课堂听课直播的是时候,那个老师出的就是这些类型题,我一直答错,那个老师提了楼主我好几次:这位小白同学又是你,你又答错了...不提了,往事不堪回首。所以,小白同学千万别灰心哦~
题五
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args) {
int a=0;
for (int i = 0; i >= a && i<100 ; i++){
a+=i;
}
System.out.println(a);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析:这个稍微没有任何细节以及“套路”,只是单纯的掺杂着些逻辑,所以段个点debug
吧,感受一下吧,结果是6
题六
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args) {
int x=4;
System.out.println("value is " + ((x>4) ? 99.9 : 9));
}
分析:这个题我估计99%
的会错 包括我自己 ,如果我没猜错的话你的结果是9
,啥?你的结果是99.9
,额这个,如果这位同学你不是杠精那我建议你回家种田吧,我和你一起,你锄地我耕田...呃呃呃那结果是什么呢,结果居然是9.0
。。。至于原因我还是不断定的哈哈没有仔细去专研过,如果必须要个结果我估计java把9这个整数默认当成浮点类型数据,我当然只是推论,那么知道的大佬就请评论出来吧。
题七
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args) {
//对于下面两句代码是否编译出错,很基础的哦
double d=3.10;
float f=3.10;
//对于下面两句代码是否编译出错,以及打印结果是多少
float a = 12345678.90123456789f;
double b=0.12345678901234567890;
float c=0.12345678901234567890f;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析:3.10
是浮点型,浮点型字面值默认当做double
类型来处理,直接编译通过;如果是float
类型则必须加 F
或者f
,若没加,直接编译不通过,会报错“损失精度”,至于解决方法也很简单, 第一种方式:强制类型转换float f1=(float)3.10
; 第二种方式:没有类型转换直接加F
或者f
,如 folat f2=3.10f
;对于abc的打印结果a = 1.2345679E7
、b = 0.12345678901234568
、c = 0.12345679
如果还不懂java浮点类型float
以及double
,可以参考这篇文章
什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?
题八
分析下列程序代码,猜想下输出结果。
public static void main(String[] args) {
int a = 1; int b = 2;
System.out.println(a);
System.out.println(b);
change(a, b);
System.out.println(a);
System.out.println(b);
}
public static void change(int a, int b) {
a = a + b; b = b + a;
}
分析下列程序代码,猜想下输出结果。
public static void main(String[] args) {
int[] arr = {1,3,5};
System.out.println(arr[0]);
change(arr);
System.out.println(arr[0]);
}
public static void change(int[] arr) {
arr[0] = 200;
}
这个题就不分析了,主要是考察数组的,答错的童靴可能对数组了解的不是特别清析,可以参考这篇文章 java数组定义、使用、以及数组内存分析详解
题九
运行结果是怎样的呢?
public static void main(String[] args) {
int i = 1, j = ++i;
System.out.println(i);
System.out.println(j);
}
分析:估计各位会觉得i=1,j=2
,噗哈哈,你还太单纯了,啥?你的答案是i=1,j=1
?回家种田吧兄嘚我陪你。那么结果是什么呢?i=2,j=2
,原因也很简单,i其实是个变量,j也是个变量,之前i值是1,之后j经历了++i
,就这个经历的同时,i已经自增++
了,所以也是2.
到这里,九个题错了一半以上的同学自觉点给楼主文章右上角点个赞,千万别灰心,就像侠岚风语咒里说的:只要心怀正义,侠岚无处不在!所以还要继续加油哇!向架构师道路冲鸭!!!
题十
这个题主要考察多态知识,涉及到向上转型和向下转型的概念,所以是比较偏难的!
package Polymorphic;
//爷爷类
class Ye {
public String show(Sun obj) {
return ("Ye and Sun");
}
public String show(Ye obj) {
return ("Ye and Ye");
}
}
//爸爸类
class Fu extends Ye {
public String show(Fu obj) {
return ("Fu and Fu");
}
public String show(Ye obj) {
return ("Fu and Ye");
}
}
//儿子类
class Zi extends Fu {
}
//孙子类
class Sun extends Fu {
}
public class PolymorphicTest {
public static void main(String[] args) {
Ye y = new Ye();
Ye y2 = new Fu(); //向上
Fu f = new Fu();
Zi z = new Zi();
Sun s = new Sun();
System.out.println("第一题 " + y.show(f));
System.out.println("第二题 " + y.show(z));
System.out.println("第三题 " + y.show(s));
System.out.println("第四题 " + y2.show(f)); //到这里挂了???
System.out.println("第五题 " + y2.show(z));
System.out.println("第六题 " + y2.show(s));
System.out.println("第七题 " + f.show(f));
System.out.println("第八题 " + f.show(z));
System.out.println("第九题 " + f.show(s));
}
}
运行结果
第一题 Ye and Ye
第二题 Ye and Ye
第三题 Ye and Sun
第四题 Fu and Ye
第五题 Fu and Ye
第六题 Ye and Sun
第七题 Fu and Fu
第八题 Fu and Fu
第九题 Ye and Sun
分析的话就涉及到太多知识点了,比如多态的金典向上向下转型,这都是必备的重点基础的基础,建议参考这篇文章【蓝色字体,点击进入】
【java基础之多态】理解多态的向上向下转型从“妈妈我想吃烤山药”讲起
到这里有木有全部正确的大哥大捏,如果有,我代表全体鸭蛋分的小白膜拜下大佬~
最后,已每题一分计算,你得多少分?勇敢说出来,尽管笑死楼主
如果本文对你有一点点帮助,那么请点个赞呗,谢谢~
最后,若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!
欢迎各位关注我的公众号,一起探讨技术,向往技术,追求技术,说好了来了就是盆友喔...
迈进java初中级程序员分水岭是否合格?十个题告诉你!的更多相关文章
- Java初中级程序员面试题宝典
Java基础部分 &与&&区别? &和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假:但是&&当第一个条件不成之后,后面的条件都 ...
- Java 初中级程序员如何快速成长???
Java 技术学习路线 Java 语言是一门非常流行和重要的语言,目前仍是需求量很大的语言,应用范围很广的语言,在企业级开发.移动开发.大数据云计算.人工智能等领域都有大量的应用. 怎么样学习好 Ja ...
- [刘阳Java]_Java程序员的成长路线_第3讲
按照Java从业人员的职位晋升来说,Java程序成长路线大致如下 Java程序员 JavaEE初级软件工程师 JavaEE中级软件工程师 JavaEE高级软件工程师 Java架构师 按照职业发展方向, ...
- 【转】成为Java顶尖程序员 ,看这11本书就够了
成为Java顶尖程序员 ,看这11本书就够了 转自:http://developer.51cto.com/art/201512/503095.htm 以下是我推荐给Java开发者们的一些值得一看的好书 ...
- 对java高级程序员有益的十本书
英文原文:http://www.programcreek.com/2013/08/top-books-for-advanced-level-java-developers/ java语言是当今最受欢迎 ...
- @Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)
一.前言 类加载器实战系列的第六篇(悄悄跟你说,这篇比较水),前面5篇在这里: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得, ...
- Java高级程序员(5年左右)面试的题目集
Java高级程序员(5年左右)面试的题目集 https://blog.csdn.net/fangqun663775/article/details/73614850?utm_source=blogxg ...
- 致Java星球程序员兄弟们的一封信
致Java星球程序员兄弟们的一封信 亲爱的Java星球的程序员兄弟们: 你们好!我是来自地球的一名Java程序员,首先我代表地球人对贵星球的高司令来到地球传授Java语言,造福了全人类,造福了整个地球 ...
- Java冠军程序员告诉你如何提升技术
让我们跟着兄弟连JavaEE培训 导师,聊一聊——怎样成为冠军程序员 ? 我认为以下几点能力是非常有帮助的: 1.强大的记忆力.当 我上八年级的时候,全因那位死气沉沉的历史老师,让我自己都相信我的记忆 ...
随机推荐
- unity 基于scrollRect实现翻页显示
unity 基于scrollRect实现翻页显示,并定为到某一页,而不是某一页的中间方法(第二个脚本采用实际位置计算,并在update里实现平滑过渡): 组场景时,经常需要获取鼠标(或者点击)开始结束 ...
- MongoDB一次节点宕机引发的思考(源码剖析)
目录 简介 日志分析 副本集 如何实现 Failover 心跳的实现 electionTimeout 定时器 业务影响评估 参考链接 声明:本文同步发表于 MongoDB 中文社区,传送门: http ...
- Pythonyu语法入门01
引子 基于上一篇所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序. 本篇的主题是先带大家了解下编程 ...
- MarkDown时序图
时序图 语法 ```sequence ``` 标题 title: 我是标题 对象 participant A participant B as b-alias 交互 sequence A->B: ...
- SpringCloud之Feign负载均衡(四)
整合Feign pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <arti ...
- 【MySQL】MySQL服务启动失解决方法
写在前面的话:前段时间,为了更加流畅愉快的玩PUBG,我在任务管理器中,关闭了mysqld服务.后来我在使用MySQL数据库服务的时候,发现去到MySQL安装目录下双击运行mysqld.exe(数据库 ...
- java架构之路-(MQ专题)RocketMQ从入坑到集群详解
这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧. 早在2009年,阿里巴巴的淘宝第一次提出了双11购物狂欢节,但是在2009年,服务器无法承受到 ...
- Splash API 调用
render.html render.html 接口用于获取 JavaScript 渲染的页面的 HTML 代码,接口地址就是 Splash 的运行地址加此接口名称,例如http://localhos ...
- 作为一名程序员,你真正了解CDN技术吗?
本文导读: 物流仓库配送如何加速 静态资源文件部署方式 静态资源加速之CDN技术 解析过程中的名词解释 最后的总结 1.物流仓库配送如何加速 我们还是从生活中购物的例子来展开. 将时光倒回到几年前,在 ...
- MAVEN(一) 安装和环境变量配置
一.安装步骤 1.安装maven之前先安装jdk,并配置好环境变量.确保已安装JDK,并 “JAVA_HOME” 变量已加入到 Windows 环境变量. 2.下载maven 进入官方网站下载网址如下 ...