《Java程序员面试宝典》中提到的i++问题在现在的面试中还经常被问到么?

「已注销」
领域专家: 后端开发技术领域
2016-10-09 11:42:32
开一贴,说三个话题:

1. 楼主最近在为找工作做准备,如果有某公司人力资源在csdn潜水看到在下,宁愿收走的。请私信给我,或者直接去看我的简历。http://blog.csdn.net/zhang5476499/article/details/52768251,工作地点意愿:北京。这第一个话题是找工作问题,有内推的朋友么?有HR在这里么?

2.之前看到网友说《Java程序员面试宝典》这本书不错,去年我就是在学校图书馆借阅这本书,凭借运气+准备+实力在校招获得offer的。后来看到网友说这本书有很多诟病。http://bbs.csdn.net/topics/290025400被论坛的大神吐槽。去年看了这本书的第一版,由于还没有到达大神的境界,所以很多东西半懂不懂就面试去了。今年还是买这本书的第四版本,前言就说了:内容主要取材于2013年至2015年多家公司的面试题。可是翻开里面的题目,发现很多东西和第一版的没有什么变化,题目也有还是2005年的题目。我就觉得纳闷了,怎么第一版到第四版几乎没有改动了,都10年前的题目了,技术都已经变化了。Struts 1.x都被Struts 2淘汰,然后又被Spring mvc淘汰了。这说的2013年到2015年的内容,这内容是可靠的么?第二个话题是:有没有大神看过这本书的最新版,第四版。有什么评价,值不值得一读?

3.我们回答i++这个话题上面来,先来讨论讨论技术本身。自信的你,请不用编译器算出,自己算出下面几道题目的答案。
题目一:下列程序输出结果是多少?

public class Test1 {
static {
int x= 5;
}
static int x, y;
public static void main(String[] args) {
x--;
myMethod();
System.out.println(x + y++ + x);
}

public static void myMethod() {
y = x++ + ++x;
}
}

题目二:
Given the following class:(给定下面的类)

public class Test1 {
public static void main(String[] args) {
int i = 0;
//Here
}
}
哪个选项替换掉类中的//Here不会输出结果为0?
A. System.out.println(i++);
B. System.out.println(i);
C. System.out.println(i+'0');
D. System.out.println(i--);

题目三:
下了重新的输出结果是:

public class Test1 {
public static void main(String[] args) {
int j = 0;
for(int i = 0; i < 100; i++) {
j = j++;
}
System.out.println(j);
}
}

题目四:
假如"int a = 5, b = 3;"则执行

if( !(a==b) && (a==1+b++) ){
}

后a和b的值分别是
题目五:以下代码执行结果是多少?

public class Test1 {

public static void main(String[] args) {
int i = 0;
i = i++ + ++i;
int j = 0;
j = ++j + j++ + j++ + j++;
int k = 0;
k = k++ + k++ + k++ + ++k;
int h = 0;
h = ++h + ++h;
int p1 = 0, p2 = 0;
int q1 = 0, q2 = 0;
q1 = ++p1;
q2 = p2++;

System.out.println(i);
System.out.println(j);
System.out.println(k);
System.out.println(h);
System.out.println(p1);
System.out.println(p2);
System.out.println(q1);
System.out.println(q2);
}

}

别着急,慢慢算,五道题,一道题20分,看看自己能够拿多少分。楼主发现自己才作对一道题。

4.楼主今年刚毕业,有半年的工作经验就跳槽。这卑微的自尊心一下子被这几个题目镇住了。当然这几个题目在去年的第一版本也是看过了。不过今年再看i++问题,我还是不能一眼(花了半个小时)就选出正确的答案。但是书上说:无论是C++还是Java,对i++类的面试问题总是很多。我记得我去年的面试过程中,问到i++问题很少。尤其是这句代码:
k = k++ + k++ + k++ + ++k;

我怀念在公司的代码规范中,用sonar扫描是不是报严重的错误?都说i++问题是谭浩强遗c语言遗留下来的产物。试问下,现在研究i++问题还有必要么?尤其是对于一个java coder来说。还是我的技术深度不够?
...全文
668 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
saybye321 2016-10-12
  • 打赏
  • 举报
回复
第二题答案是C吧
heanyinqin 2016-10-12
  • 打赏
  • 举报
回复
引用 14 楼 zhang5476499 的回复:
[quote=引用 11 楼 heanyinqin 的回复:] 想问一下,第三题为何j=0啊,表示不大理解
因为java用了中间混存变量的机制,所以,j=j++可换成如下写法: temp=j; j=j+1; j=temp;[/quote] 貌似懂了,就是说如果j=0,然后temp=j=0;,j=j+1=1,但是此时temp=0,j=temp=0,所以到最后还是j=0,可以这么理解么
「已注销」 2016-10-11
  • 打赏
  • 举报
回复
引用 11 楼 heanyinqin 的回复:
想问一下,第三题为何j=0啊,表示不大理解
因为java用了中间混存变量的机制,所以,j=j++可换成如下写法: temp=j; j=j+1; j=temp;
「已注销」 2016-10-11
  • 打赏
  • 举报
回复
引用 12 楼 zhang5476499 的回复:
[quote=引用 8 楼 wangyin970774934 的回复:] 你怎么没给上答案,我做了我也不知道结果正确不正确啊 1.输出2 2.c 3.0 4.a=5 b=3; 5. 看着就不想做下去了啊
答案和解析如下: 1. 2。这里的坑主要是static{int x= 5;}//在第一次被载入jvm时运行,但由于是局部变量,x=5不影响后面的值(来自参考答案) 2. B 3. 0,因为java用了中间缓存变量的机制,所以,j=j++可换成如下写法:

temp = j;
j = j+1;
j = temp;
所以结果为0,我用编译器运行,结果确实也是0. 4. D 5. i = 2, j = 7, h = 3, p1 = 1, p2 = 1, q1 = 1, q2 = 0。 你的基础很扎实。[/quote]答案粘贴的时候有点出入,再次纠正下: 1. 2 2 B 3. 0 4. 5, 4 5 i = 2, j = 7, k = 7, h = 3, p1 = 1, q1 = 1, q2 = 0
「已注销」 2016-10-11
  • 打赏
  • 举报
回复
引用 8 楼 wangyin970774934 的回复:
你怎么没给上答案,我做了我也不知道结果正确不正确啊 1.输出2 2.c 3.0 4.a=5 b=3; 5. 看着就不想做下去了啊
答案和解析如下: 1. 2。这里的坑主要是static{int x= 5;}//在第一次被载入jvm时运行,但由于是局部变量,x=5不影响后面的值(来自参考答案) 2. B 3. 0,因为java用了中间缓存变量的机制,所以,j=j++可换成如下写法:

temp = j;
j = j+1;
j = temp;
所以结果为0,我用编译器运行,结果确实也是0. 4. D 5. i = 2, j = 7, h = 3, p1 = 1, p2 = 1, q1 = 1, q2 = 0。 你的基础很扎实。
tomaot123 2016-10-11
  • 打赏
  • 举报
回复
额,恶心的企业才问这样问题把
wangl66 2016-10-11
  • 打赏
  • 举报
回复
第四题 a=5,b=3 应该没法运行吧,b不应该等于4才能执行if语句么?
小灰狼 2016-10-11
  • 打赏
  • 举报
回复
引用 3 楼 NewMoons 的回复:
3、做题不要过于纠结对错,关键是理解题目的意思,有时候尽管答案不准确,但意思写出来了,就够了。关键的是,你理解了还做错,就是你太粗心了。
要看运气 有时出卷的是专业人才,再给一个标准答案。阅卷的没准是个HR,直接对标准答案,错了就是错了,你根本没机会让人知道你是不是理解对了
小灰狼 2016-10-11
  • 打赏
  • 举报
回复
引用 1 楼 qq_29594393 的回复:
这种东西完全就是做死,如果我项目中遇到这样的SB,先干一架再说,逗我玩,哪个公司会允许这样的东西出现在项目中?无聊玩玩还行
+1 这种题就是学院派的人喜欢拿来秀,显得出题的人对所谓的“基础”掌握得多牢。而其实在实际工作中,这样写纯粹是在作死。
肃穆丶 2016-10-10
  • 打赏
  • 举报
回复
你怎么没给上答案,我做了我也不知道结果正确不正确啊 1.输出2 2.c 3.0 4.a=5 b=3; 5. 看着就不想做下去了啊
肃穆丶 2016-10-10
  • 打赏
  • 举报
回复
但是你比我厉害的多了去了
肃穆丶 2016-10-10
  • 打赏
  • 举报
回复
我现在也大四了,也是计算机科学与技术专业。。。。 也是正在准备找工作, 大兄弟
NewMoons 2016-10-10
  • 打赏
  • 举报
回复
拉勾网可能不太适合你,是面向有多年工作经验的招聘网站,更偏向于互联网企业,不过也可以试试机会。 个人觉得最靠谱的还是智联,企业和职位数量最多,面试约见率也高。 51job太杂,不是首选,但也可以试试机会。其实10几年前51job还是不错,不知为什么现在越做越糟。 还有一个中华英才网也可以考虑,个人觉得比51job稍差些,但也还算专业。 猎聘网只面向中高端人员。 赶集和58觉得就是低端招聘网站,不适合软件类。 另外还有100offer什么的也可以看看。 现在招聘网站远比我十几年接触的多多了,机会虽然多但也容易盲目,针对性地研究下再发简历,节约自己的时间。
「已注销」 2016-10-10
  • 打赏
  • 举报
回复
引用 3 楼 NewMoons 的回复:
看你这么认真,个人给你一点点建议,仅供参考。 1、如果你公布简历的目的是想尽快找到工作,就不要在页面上加其它的东西,开头的那段文字任何一个hr都没有兴趣看,因为她们比你懂得多。 2、简历里没有注明毕业院校,就看见学院2字,不知什么原因。 3、做题不要过于纠结对错,关键是理解题目的意思,有时候尽管答案不准确,但意思写出来了,就够了。关键的是,你理解了还做错,就是你太粗心了。 以我个人经验判断,楼主目前的实力在北京找个理想的工作应该不是问题,关键你想找什么样的企业,再明确下方向。我现在正在组团队,不过还不明确招什么样的人,先在这里做个记号。 曾经的我很象现在的你,而且比我准备的充分多了。。机会永远只会垂青有准备的人,但北漂的路会很艰辛,祝楼主好运。
谢谢,昨天写那篇博客的原因是因为前几天有我们学校大四的学妹问我去年求职时候怎么写的简历,发我的简历模板给她看,,然后我就突然想起,可能在csdn也有一些大四学生在思考怎么写简历之类的。 xx学院,和我的手机号码被打码是我故意去掉的,但是在投简历的时候这些信息都是完整的,我看职位几乎是在拉钩网看的,可能还考虑智联招聘,不知道还有推荐的求职网站不,51job感觉广告太多,赶集和58同城感觉不是专业的求职网。 还有,多谢在我的简历上提出意见,我的简历也是在今后的投递中不断的修改,所以现在有不足之处,还可以不断的改进。
NewMoons 2016-10-10
  • 打赏
  • 举报
回复
看你这么认真,个人给你一点点建议,仅供参考。 1、如果你公布简历的目的是想尽快找到工作,就不要在页面上加其它的东西,开头的那段文字任何一个hr都没有兴趣看,因为她们比你懂得多。 2、简历里没有注明毕业院校,就看见学院2字,不知什么原因。 3、做题不要过于纠结对错,关键是理解题目的意思,有时候尽管答案不准确,但意思写出来了,就够了。关键的是,你理解了还做错,就是你太粗心了。 以我个人经验判断,楼主目前的实力在北京找个理想的工作应该不是问题,关键你想找什么样的企业,再明确下方向。我现在正在组团队,不过还不明确招什么样的人,先在这里做个记号。 曾经的我很象现在的你,而且比我准备的充分多了。。机会永远只会垂青有准备的人,但北漂的路会很艰辛,祝楼主好运。
NewMoons 2016-10-10
  • 打赏
  • 举报
回复
我在面试的时候肯定会问,即使面的是架构师。 但我不会搞得这么变态,尽管我曾经也被笔试过无数次。 一般我会这么问:请问 i++ 和 ++i 有什么区别? 个人建议,如果你遇到一长串的这种++笔试题,还是不要再继续浪费你的时间了。
heanyinqin 2016-10-10
  • 打赏
  • 举报
回复
想问一下,第三题为何j=0啊,表示不大理解
qq_32217411 2016-10-10
  • 打赏
  • 举报
回复
本系统是东华软件有限公司开发的用于在线考试的教育系统,系统包括学生端、教师端、试题录入、发发布测试,成绩分析,考试监控,智能答卷等模块。系统使用了Java企业级开发的开源框架以及前端技术jQuery库及其插件,Bootstrap框架。表示层运用了Metronic 架构,使用jsp为视图Struts 2.5作为控制器并实现了REST风格的请求;业务逻辑层运用了MVC模式,并通过AOP实现事务、tomcat log4日志和安全性等功能;持久层使用了Hibernate封装CRUD操作,底层使用Oracle实现数据存取。整个项目采用了瀑布模型开发模型。可以参考下我的项目经验,里面还有好多内容写在别的项目经验里面了
「已注销」 2016-10-10
  • 打赏
  • 举报
回复
引用 8 楼 wangyin970774934 的回复:
你怎么没给上答案,我做了我也不知道结果正确不正确啊 1.输出2 2.c 3.0 4.a=5 b=3; 5. 看着就不想做下去了啊
白天有点忙,晚上贴上答案。 大四学生,推荐看一看这帖子:http://blog.csdn.net/zhang5476499/article/details/45890749
当作看不见 2016-10-10
  • 打赏
  • 举报
回复
这种东西完全就是做死,如果我项目中遇到这样的SB,先干一架再说,逗我玩,哪个公司会允许这样的东西出现在项目中?无聊玩玩还行
Java程序员面试宝典》主要内容简介:目前许多开发者对Java语言及其底层原理掌握不牢固,在面试过程经常漏洞百出,无法取得好成绩。而招聘单位为了得到高素质的员工往往使出浑身解数,采用各种形式的面试考察求职者,这让面试难度大大增加。求职者要想成功应聘,不仅需要扎实的基本功,还需要经受情商和智商方面的考查。《Java程序员面试宝典》通过200个面试题,对企业招聘Java程序员需要掌握的知识进行了系统、全面的总结,以帮助读者进行充分的面试准备,在激烈的竞争拔得头筹。《Java程序员面试宝典》列举了各大IT公司的面试真题,详细分析了应聘Java程序员职位的常见考点,主要内容包括面试流程及求职准备、Java语言基础、数据类型、集合框架、图形用户界面、输入与输出、多线程、反射机制、网络编程、JDBC、Web开发基础、SSH框架(Struts、Spring和Hibernate)、EJB、JPA、算法、设计模式及情商和智商类面试题。《Java程序员面试宝典》附带1张DVD光盘,内容为《Java程序员面试宝典》所有面试题的多媒体教学视频(共14.5小时)及免费赠送的55小时Java教学视频和5.5小时算法教学视频。授人以鱼,不如授人以渔。《Java程序员面试宝典面试题不但以实例代码和流程图的形式对答案进行了详细解析,还对问题的相关知识点进行了扩展说明。希望通过《Java程序员面试宝典》,读者可以成功应聘,并提升综合素质。《Java程序员面试宝典》适合应聘Java和J2EE职位的程序员阅读,也适合其他程序员作为拓展读物进行阅读。

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧