实习之路记录

您所在的位置:网站首页 新浪算法面经 实习之路记录

实习之路记录

2024-07-08 22:27| 来源: 网络整理| 查看: 265

自勉。进步。持续更新。

意向岗位:算法工程师、开发工程师、测试工程师

更新:想了想,觉得自己的论文,还有代码能力,创新能力稍弱,可能主攻开发工程师了

一、面经汇总: 1. 网易、滴滴、爱奇艺、平安科技、新浪    算法面经

实习面经分享_笔经面经_牛客网总结一下这几个月的面试吧。这一路走来确实不易。 面经主要公司是:网易+滴滴+爱奇艺+平安科技+新浪 网易 人工智能实习生 一面https://www.nowcoder.com/discuss/155532

2. 深信服、腾讯、字节    开发面经

日常实习面经_笔经面经_牛客网日常实习面经 深信服 岗位:C/C++软件开发 一面(65分钟) Linux进程调度算法主要有哪些?(FIFO、RR、CFS) 大多数进程采用哪种调度方式?CFS高优先级进程可以被抢https://www.nowcoder.com/discuss/354773?type=2&order=0&pos=12&page=1

3. C++ 面试基础总结

https://github.com/huihut/interviewhttps://github.com/huihut/interview

4. 机器学习面经

https://www.nowcoder.com/discuss/681294?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrackhttps://www.nowcoder.com/discuss/681294?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack

5. 开发工程师面经 秋招总结 | 来听听我秋招放弃算法转向开发的经验历程~_猿生活_牛客网一、序言 作为一名2022届应届硕士毕业生参与了一场惨烈的秋招战斗,所幸本人战斗的结果还可以,最终签约北京美团,岗位是后端开发,现来总结秋招历程,反馈牛客!这里值得注意的是,本人是从算法赛道转到开发https://www.nowcoder.com/discuss/800771?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=5CAC797530CD1CD6C46DB34B2C90DF19-1638439541538  6. C++面试总结 C++后台:从实习到秋招的总结(已签腾讯微信)_笔经面经_牛客网这是我实习到秋招的笔记资料 链接: https://pan.baidu.com/s/1p3K6VILrMexeb8ciCRitdQ 提取码:zsu6 虽然内容会因为本人字https://www.nowcoder.com/discuss/586944?type=post&order=jing&pos=&page=2&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=5CAC797530CD1CD6C46DB34B2C90DF19-1638454215367 二、知识点准备: 一些值得参考的链接:

C++基础知识大全_clw_18的博客-CSDN博客秋招基本尘埃落定了,打算总结一下C++学习路线的相关知识,今天是第一篇:C++基础知识总结。面向对象的三大特性:1、封装:把客观事物抽象为类,包含自己的属性和方法。2、继承:使用现有类的所有功能,在无需重新编写原有类的情况下对类的功能进行拓展。被继承的类成为父类或基类,继承的类成为子类或派生类。3、多态:一种形式,多种状态,分为静态多态和动态多态。静态多态指编译时多态,如函数重载、模板;动态多态指运行时多态,特指virtual虚函数机制形成的多态。类的访问权限:private、protectedhttps://blog.csdn.net/weixin_49199646/article/details/121066029

三、常见的手撕代码: 1.  二叉树的遍历

树的前序遍历、中序遍历、后序遍历详解

参考解法:力扣

这几道题都有一个递归版的解法,类似,难点主要是递归如何实现,怎么理解递归:

对于递归有没有什么好的理解方法? - 知乎

递归解法比较简单:

先序

# 方法一 递归解法 前序后序中序都是相同的套路 class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: def preorder(root: TreeNode): # 结束条件:节点为null,则结束 if not root: return # 遍历根节点 res.append(root.val) # 遍历 preorder(root.left) preorder(root.right) res = list() preorder(root) return res # 时间复杂度:O(n),其中 n 是二叉树的节点数。每一个节点恰好被遍历一次 # 空间复杂度:O(n),为递归过程中栈的开销,平均情况下为 O(\log n),最坏情况下树呈现链状,为 O(n)。

中序

# 方法一 递归法 class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: def inorder(root: TreeNode): if not root: return # 先遍历左子树 inorder(root.left) # 根节点 res.append(root.val) # 遍历右子树 inorder(root.right) res = list() inorder(root) return res

后序

# 解法一 递归法 class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: def postorder(root:TreeNode): if not root: return postorder(root.left) postorder(root.right) res.append(root.val) res = list() postorder(root) return res

迭代解法:

递归的时候隐式地维护了一个栈,而在迭代的时候需要显式地将这个栈模拟出来。这个难度比递归要难一些

前序:

# 方法二 迭代解法 # 使用栈来递归 # https://www.bilibili.com/video/BV1dA411L7Mj 这个up讲得太好了!!!一下子明白了 # 1. 初始化栈,将根节点入栈 # 2. 当栈不为空时: # 弹出栈顶元素 node,并将值添加到结果中; # 如果 node 的右子树非空,将右子树入栈; # 如果 node 的左子树非空,将左子树入栈 class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: # 特例判断 if not root: return # 把根节点压入栈中 stack = [root] # 结果列表 ans = [] # 当栈不为空,也就是树还没遍历完 while stack: # 弹出栈顶元素 node = stack.pop() ans.append(node.val) # 先把右子树压进去,先进后出 if node.right: stack.append(node.right) if node.left: stack.append(node.left) return ans

中序

# 方法二 迭代法 使用一个固定的模板 class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: if not root: return [] ans = [] # 都是要先把根节点压进去 cur, stack = root, [] # 只要当前节点或者栈有一个不是空就继续遍历 while cur or stack: while cur: # cur 入栈 stack.append(cur) # 找到当前最左端的孩子 cur = cur.left # 弹出栈顶元素 tmp = stack.pop() # 加入结果 ans.append(tmp.val) # 弹出栈中叶节点的父节点,当左子树完全遍历完就会遍历右子树 cur = tmp.right

后序没搞懂,需要一个pre节点来判断是都遍历??



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3