火石软件口试 恶心
火石软件面试 恶心我发现好多面试官都喜欢说这个有点问题啊 你自己去网上找找吧(至于有什么问题,提一下
火石软件面试 恶心
我发现好多面试官都喜欢说
"这个有点问题啊 你自己去网上找找吧"(至于有什么问题,提一下要几秒钟的事?)
记得还有个问题
让我写个关于iterator的,有一句是
iter++;
他说难道你不知道iter++比++iter更慢吗?
so,弱弱的问下:对于非内置对象 像刚刚这种临时变量编译器会优化掉吗?
内置对象印象中是会优化掉的。
[解决办法]
这个有点像 i++ 和 ++i 的意思么 区别是先加 还是 先赋值
[解决办法]
严格来说,是一样的。
[解决办法]++it返回引用,效率高
[解决办法]这个单独出来有区别吗。除非是放在for或者while中
[解决办法]他们不知道编译器有个功能叫做优化
[解决办法]回答知道,然后告诉他为何iter++慢不就行了。面试官是考你知不知道++i和i++各自做了些什么。要是真比程序速度快慢,那就该想想算法对不对,能不能剪枝。
[解决办法]it++需要一个额外的临时对象,存放原本位置并返回。而++it直接返回引用
自己对++重载试一试就就明白的
[解决办法]没办法,你们地位不对等,是你非要去他那里,不是他求你去。否则他不会面试的,直接就要你了
[解决办法]>so,弱弱的问下:对于非内置对象 像刚刚这种临时变量编译器会优化掉吗?
>内置对象印象中是会优化掉的。
effective和exceptional C++都有提到这个问题
我记不清楚那些情况下会被优化了
但是这两本书的共同结论是
"写C++的好习惯,没必要别用iter++,用++iter"
面试官想考的,也许不只是你懂不懂iter++和++iter
的差别,他们还想知道你是否注重"习惯的养成"
我觉得这是小问题,只要有心,一定可以练起来
但我也遇过不少人完全不重视这些东西的
"什麽好习惯?你以为你很行吗?老子写的东西会动就行了"
面试官怎麽想我就不知道了
[解决办法]代码书写习惯忘打了,发完后想起来了,但又懒得再发一条回复。
好的面试官想的应该是这些。搓的么,网上见过几个帖子,然后就想效率高呀。
[解决办法]it++ 如果类的操作符被重载,这时候可能不会优化的,例如复数运算的类,重载++不出奇的。这时候函数写得好,编译器就可能优化,但依然不保障一定优化。但++it 就没有该问题了。
楼主说的标准库的 iterator ,iterator 也是一个类,就为该类实现得好,无论前+或后+编译器都会处理掉。但是如果发布的是DEBUG版,就不一定会被优化了。因为我们写的软件中,有很多情况下是不得不发布DEBUG版本,甚至Release版本因错误太多且无法捕捉而无法发行。
所以好的编程习惯,还是有益的。
[解决办法]自己比较一下release版生成的代码不就知道了么
[解决办法]不去也罢,一点这样的老是蛋疼!