avatar-decorate
爱刷题的小李 level
获赞
1637
粉丝
470
关注
2
看过 TA
1734
北京理工大学
2021
算法工程师
IP属地:北京
刷题,刷题,刷题,今天你刷题了吗!
私信
关注
1. push_back()左值和右值的区别是什么?2. move底层是怎么实现的?3. 完美转发的原理是什么?4. 空类中有什么函数?5. explicit用在哪里?有什么作用?6. 成员变量初始化的顺序是什么?7. 指针占用的大小是多少?8. 野指针和内存泄漏是什么?如何避免?9. malloc和new的区别是什么?10. 多线程会发生什么问题?线程同步有哪些手段?11. 什么是STL?12. 对比迭代器和指针的区别13. 线程有哪些状态,线程锁有哪些?14. 解释说明一下map和unordered_map15. vector中的push_back()和emplace_back()的区别、以及使用场景16. 如何实现线程安全,除了加锁还有没有其他的方式?17. vector扩容,resize和reserve的区别18. vector扩容为了避免重复扩容做了哪些机制?19. C++中空类的大小是多少?20. weak_ptr是怎么实现的?21. 虚函数的底层原理是什么?22. 一个函数f(int a,int b),其中a和b的地址关系是什么?23. 移动构造和拷贝构造的区别是什么?24. lamda表达式捕获列表捕获的方式有哪些?如果是引用捕获要注意什么?25. 哈希碰撞的处理方法26. unordered_map的扩容过程27. vector如何判断应该扩容?(size和capacity)28. 构造函数是否能声明为虚函数?为什么?什么情况下为错误?29. 类中static函数是否能声明为虚函数?30. 哪些函数不能被声明为虚函数?31. 如何保证类的对象只能被开辟在堆上?(将构造函数声明为私有、单例)32. 讲讲你理解的虚基类33. C++哪些运算符不能被重载?34. 动态链接和静态链接的区别,动态链接的原理是什么?35. C++中怎么编译C语言代码?答案附在面经中  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
游卡校园招聘部HR_主页内推:收藏了
查看35道真题和解析
0 点赞 评论 收藏
分享
1、树的两种遍历DFS 有回溯的递归称为 DFS 深搜    没有回溯的递归  就是普通递归BFS 有重放的循环 称为BFS 广搜没有重放的循环  就是普通循环2.深度优先遍历 DFS      树的 先序、中序、后序,本质上都是 深度优先搜索,每条路走到尽头以后再考虑其他方向回溯思想,因为递归全程索引同一份变量,所以在某条路线的递归完成以后 开启新递归路线之前,要恢复现场、撤销选择实现方式递归实现,走不通以后原路返回,走下一条路栈实现,先入先出的特性,递归本身也是用了方法栈的原理广度优先遍历 BFS 循环嵌套-迭代二叉树的层序遍历,逐层遍历,本质上就是广搜一层层遍历树,每层遍历完,再遍历下一层重放思想,要求遍历顺序时队列实现,多层循环嵌套实现,内层嵌套,遍历的是 队列利用队列的先入先出实现重放,定义排序规则把集合里的特殊元素放入队列,然后遍历集合,对每个节点进行 跟队列里的元素做处理。实现广度,不要求遍历顺序、只是统计时ArrayList、优先队列、数组、栈等看具体场景3、减枝根据条件去避免对某些子树的遍历处理,减少不必要的操作4、回溯回溯算法,实际上就是一个决策树(因为在每个节点上都要做决策)的遍历过程:1路径:也就是已经做出的选择。2选择列表:也就是当前可以做的选择。3结束条件:也就是到达决策树底层(选择列表为空的时候),无法再做出选择的条件4共享变量的恢复回溯问题对于回溯算法问题我们要进行抽象,抽象为一个多叉树,通过遍历全部的节点获得最终结果回溯记忆法,DFS实现,退出条件,回溯过程,递归参数如 :找零钱、两种背包问题、数组组合总和上述方法会总结到我的算法专栏  数据结构amp;算法导论-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/jvNEaj
0 点赞 评论 收藏
分享
头像
2023-10-24 15:34
已编辑
北京理工大学 算法工程师
平时刷题时,市面上大多数尤其以LeetCode为首很多的题库,以及很多人写的题解,非常习惯把算法分类,包括贪心、二分、动态规划等。其实这种分类是比较笼统的,如果在做题的时候,第一直觉先判断这是哪一类的题其实并不是一个很好的策略,千万不要去用这种归类的方式去做题。最好的办法是要培养一种题感,拿到一道题时,应该去想这道题应该往哪个方向去做,这种感觉是最重要的,而真正用什么算法去解决其实是第二步去思考的。同时,比如LeetCode中,题是非常多且杂的,如果一道道题来刷是非常浪费时间的。其实很多题目是可以发散成为很多个小题目,或者说一道题目当中的知识能够覆盖一个面,这种以点带面的题目其实是比较高质量的题目。多刷高质量题目,可以帮助节约时间同时也可以培养深度思考的能力。刷题目最重要的不是会做某一道题,而是要培养思考能力,这也是在面试时面试官最希望看到的。做一道题千万不要觉得思考的差不多了,然后就直接看答案。至少要有30分钟起底的深度思考能力,达到这样的时间长度,才能获得这道题里最精髓的东西,否则的话这题对刷题而言就比较浪费了。同时要找到一种正逻辑。思考完难免有不会解的题目,但是当看完题解,要思考的不是这道题会了就行了,要倒过来去思考为什么一开始没有想到这种解法,应该怎么想才能想到题解,这也是非常重要的。 #24届软开秋招面试经验大赏#   数据结构amp;算法导论-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/jvNEaj
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务