cpp课程面试技巧,cpp面试题及答案
如何看待问“a = a + b和a += b有什么区别”的Java面试官?
如果面试中大量的问题和考验纠结于这种所谓的基础知识,我只能替这家公司感到担忧。在项目实践过程中,使用a=a+b还是a+=b,不会影响关键程序逻辑的构造。是否能讲出所谓的区别,也根本无法评估一个开发人员的能力高低。如今的软件开发行业技术迭代日新月异,各种语言、框架、开发理念设计模式层出不穷,而作为开发者需要时刻保持对新技术的学习掌握使用,根本没有过多的时间再去计较每一种技术的细微特性,并且是否了解这些细节特性实际上并不会对工作质量产生多大的影响。现代的软件开发人员在很多时候,碰到问题只求快速找到解决方案,以求及时解决当前面临的问题。例如本人非常频繁地使用MD5算法,但是自从接触编程以来,我就没有认真分析过MD5算法的具体实现过程。在早起的JDK1.4的年代基本类库中并没有提供直接的MD5加密工具类,我就谷歌上找了一段现成的代码。后来apache commons组件库提供了现成的各种加密算法工具包,我就直接使用这些组建工具进行日常开发。因为我个根本不需要掌握着这些加密算法的实现原理,这种加密解密方法在我眼里就是一种无需掌握细节便可满足日常工作的基础工具包。
j***a不太清楚,c/c++里面考虑的话a=a+b会先生成一个临时变量a然后a=a+b,而a+=b不会产生临时变量,直接在变量a上加b,效率会高一些。这就好比写一个循环的时候,++i比i++效率高一样
哼哼哼,本姑娘,被J***a吊打了两年的计算机专业学生来告诉你:千万别以为a=a+b和a+=b是一样的!
事实上,它们有一些类型和精度上的差异。
这两种形式的主要区别在于是否进行数据类型的自动转换,当两个操作数同类型时这两种形式的运算结果是没有差别的,当两个操作数数据类型不同时,且左操作数即保存结果的操作数的数据精度要低,此时这两种形式就有区别了。
上面这段话有点绕,举个例子:
public classDemo
{
public static void main(String[] args) {
short a=4;
int b=5;
a+=b;
估计提问的人,才做J***a没几年,问有什么区别并不是真的难为你,而是想问你基础扎实还是不扎实,J***a代码细节很重要,要不然bug找起来起来很困难,很简单的道理,如果做一个银行结算功能,你不知道i++和++i的区别,就有可能把钱算错,测试出问题需要花费大量的时间排查是数据库数据有问题?还是算法问题?或者界面传值有问题?结果查了一天发现是自己写的循环有问题,这还是发现出来的,如果测试量少,没有发现呢?
还有如果你不知道arrayList和linkedList的区别,不知道stringbuffer和stringbuilder的区别,不知道map扩容机制,然后你就会发现,你的代码最烂,bug最多,效率最底下,项目组也会计算成本与人工花费的!代码的细节真的很重要!
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.julong999.com/post/19600.html发布于 07-01