cpp课程面试技巧,cpp面试题及答案

huangp1489 2024-06-28 20

扫一扫用手机浏览

文章目录 [+]
  1. 如何看待问“a = a + b和a += b有什么区别”的Java面试官?
  2. 如何混和使用c与c++编程?

如何看待问“a = a + b和a += b有什么区别”的J***a面试官?

J***a中a = a + b和a += b有俩点区别

  • “a=a+b”多了一层中间变量的操作,导致执行效率低于“a+=b”,然而j***a编译期默认会对该操作进行优化,最终二者执行效率是一样的。

我觉得面试官问这个问题属于正常现象

相信很多初级开发人员对这个问题答案的认知停留在没有区别的层次上,虽然自己平时这俩种方法可能都用过,但也不会去细究二者的区别,而面试官问这个问题,应该是想对你的j***a基础知识的扎实程度做一个了解,要知道工作经验的长短并不是衡量一个人技术高低的标准,也有很多5年工作经验的开发,技术很差而想要浑水摸鱼的情况。毕竟开发也分低级、中级和高级,每个级别的薪资水平不一样,面试题目当然也不一样,低级和中级问的比较多的是j***a基础的一些问题,而高级开发则会问s***的源码、基本原理、高并发、多线程等。

cpp课程面试技巧,cpp面试题及答案
(图片来源网络,侵删)

很多人可能对面试官的问题表示不屑一顾,感觉这么简单的问题拿来考我简直是对我的侮辱,亦或是觉得这种工作中根本用不到的问题拿来问简直是多此一举,甚至有几年工作经验的程序员直接拒绝笔试,我觉得这些都是一种错误的态度,真的的技术大牛应该是能够在任何问题面前宠辱而不惊,用自己的真正实力去证明自己。


以上为个人观点,欢迎在评论中发表自己不同的观点,喜欢的加个关注,谢谢。

哼哼哼,本姑娘,被J***a吊打了两年的计算机专业学生来告诉你:千万别以为a=a+b和a+=b是一样的!

cpp课程面试技巧,cpp面试题及答案
(图片来源网络,侵删)

事实上,它们有一些类型和精度上的差异。

这两种形式的主要区别在于是否进行数据类型的自动转换,当两个操作数同类型时这两种形式的运算结果是没有差别的,当两个操作数数据类型不同时,且左操作数即保存结果的操作数的数据精度要低,此时这两种形式就有区别了。

上面这段话有点绕,举个例子:

cpp课程面试技巧,cpp面试题及答案
(图片来源网络,侵删)

public classDemo

{

public static void main(String[] args) {

short a=4;

int b=5;

a+=b;

从运维人员角度来说,a=a+b会比a+=b好,主要不是为了性能,不是为了节省计算步骤,或者代码比较漂亮。就是为了别人读代码能更简单的理解你的逻辑。

a=a+b基本需要初中数学就懂得的公式。但是a+=b都需要有编程语言背景的才能看懂,而且j***a,c,c++,Python,perl各种各样编程语言都有他的特性。有的先算左边有的先算右边,这个在无形中加重了阅读和接手代码的难度。因为大型项目,开发人员50人以上的,人员流动十分十分频繁,而且新招聘往往都是比较新手的,代码写法越粗俗接手的人员要求越低,二次修改导致的bug的概率会越低。有助于项目的成功。

而且现在机器的计算能力已经这么强了,普通的业务代码强烈要求使用a=a+b,对于那些架构师大拿写的框架或者底层代码需要考虑性能的,那就根据实际情况选择了。

说实话,如果你的面试官喜欢问这种问题,你可以得到一个结论和做一个决定了!

这个结论是:这个面试官水平应该不算高!

这个决定是:这家公司不要去了吧!

我曾经大学时候学习C语言的时候,就是用的某著名教授的畅销千万册的书籍,那时候给我的感觉就是这本书我真的是看不懂,感觉看得是迷迷糊糊的,完全不知道在讲什么,到了重点的指针什么的也感觉都是犹抱琵琶半遮面。

那时候我的C语言老师,最喜欢搞这种a++和++a的游戏,而且几乎每一次上机测验一定会有一个题目是关于这个的题。

甚至一度我都怀疑是我自己不行,因为听不懂,感觉老师讲的都是天书,而且感觉老师总是要花时间讲一些奇奇怪怪知识点,这就是我那时候对于C语言这门课最大的感觉。甚至一度连我这个曾经中学时代就看过一些VB书籍,而且自认为中学时代数学、物理好到爆的学生,都开始怀疑自己,是不是我逻辑思维有问题。

关键是按照老师的做,居然还能考高分,更可怕的是考了高分以后都不知道自己为什么考到的高分,是真的C语言学好了吗?显然不是!

后来我实在感觉已经快失去对C语言的最后一点信心了,只是觉得这样下去不行,我只好自己去百度、去Google,然后自己找资料,现在想想应该感谢这么课,然后我自己找到了C Primer Plus,最后找到了K&R C,让我明白不要过分纠结于语法游戏,对于真正学会编程到底是有多重要。

并且因为这门课让我没有被禁锢住,养成了我大学几年坚持用GitHub、stack overflow、Google、以及学会使用查官方文档的好习惯。

这是我学生时代经历的又一大痛楚!

估计提问的人,才做J***a没几年,问有什么区别并不是真的难为你,而是想问你基础扎实还是不扎实,J***a代码细节很重要,要不然bug找起来起来很困难,很简单的道理,如果做一个银行结算功能,你不知道i++和++i的区别,就有可能把钱算错,测试出问题需要花费大量的时间排查是数据库数据有问题?还是算法问题?或者界面传值有问题?结果查了一天发现是自己写的循环有问题,这还是发现出来的,如果测试量少,没有发现呢?

还有如果你不知道arrayList和linkedList的区别,不知道stringbuffer和stringbuilder的区别,不知道map扩容机制,然后你就会发现,你的代码最烂,bug最多,效率最底下,项目组也会计算成本与人工花费的!代码的细节真的很重要!

最后一句话,如果你知道可以不屑回答,但是,不知道还是安心的补充知识吧!

如何混和使用c与c++编程?

c++是c语言的继承和发展,c++是在c语言的基础上添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,而且三种基本结构的描述也一样,尤其是学过c语言的人在用c++编程时习惯了用c中的格式输出与输入函数完成输出与输入,让人就产生了一种错觉,好像是两种语言混用了,其实这也是属于c++中的内容,它只是继承了c中的一些内容。但是这两种语言有本质的区别,它们的程序设计方法不同,c是面向过程的程序设计语言而c++是面向对象的程序设计语言。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.sachainchioilreview.com/post/17688.html

相关文章