#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)

#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)

时间:6月30日-6月30日

时长:30分钟

面试内容:关键字const有什么含意?我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?

const int a;int const a;const int *a;int * const a;int const * a const;

前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:

  1. 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
  2. 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
  3. 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

面试总结:注重基础

#嵌入式笔面经分享#
全部评论

相关推荐

1. C++程序到可执行程序的四个过程是什么?2. 面向对象的特性有哪些?3. 静态多态和动态多态的区别是什么?4. 动态多态和静态多态的原理,哪个效率更高?5. 什么是智能指针?它们的类型有哪些?6. std::shared_ptr是否线程安全?7. 深拷贝和浅拷贝的区别是什么?8. i++、++i和++(i++)的区别是什么?9. 右值引用、移动语义的底层原理是什么?10. std::vector A存储在哪,A.push_back(1)中的1存储在哪?11. std::vector的clear和push_back的时间复杂度以及原因是什么?12. STL容器是否线程安全,为什么?13. 线程与进程的区别是什么?14. 线程创建的最大数量计算公式是什么?15. 什么是协程?协程是否有创建数量的限制?16. 死锁的概念是什么?如何避免死锁?17. 每个线程需要100把锁,怎么做可以避免死锁?18. thread_local的作用是什么?19. 说一下动态链接和静态链接的区别。20. 编译的过程是怎样的?21. 如何找两个无环链表的公共节点?22. 如何找无序浮点数数组的中位数?23. 快速排序的原理以及优化方式是什么?24. 请说一下C语言如何实现链表。25. 如何将GPIO注册成中断?26. 按键GPIO需要把中断配置成什么样的,怎么触发?27. 应用层如何在不使用read的情况下拿到驱动层的数据?28. 信号在驱动层触发应用层可以捕获到吗?29. 什么是input子系统,识别到事件后是如何给应用层的?30. Linux系统中进程默认栈空间是多大?如何修改?************************  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看30道真题和解析
点赞 评论 收藏
分享
1 7 评论
分享
牛客网
牛客企业服务