自分自身を励ましましょう。進捗。継続的に更新されます。
対象職種:アルゴリズムエンジニア、開発エンジニア、テストエンジニア
追記:よく考えてみると、論文はまだコーディング能力はあるものの、イノベーション能力が少し弱いような気がするので、開発エンジニアに注力するかもしれません。
1. 対面体験の概要:
1. NetEase、Didi、iQiyi、Ping An Technology、Sina Algorithm
2. Sangfor、Tencent、Byteの開発経験
3. C++ インタビューの基本の概要
https://github.com/huihut/interview https://github.com/huihut/interview
4. 機械学習の経験
5. 開発エンジニアインタビュー
秋採用まとめ | 秋採用でアルゴリズムを捨てて開発に転向した私の体験を聞いてみましょう~_头生活_Niuke.com 1. はじめに 私は今年の修士課程を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-16384395 4153 8
6. C++ インタビューの概要
C++ の背景: インターンシップから秋採用までの概要 (Tencent WeChat で署名)_Bi Jing Mian Jing_Niuke.comこれは、インターンシップから秋採用までの私のメモのリンクです: 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&gid = 5cac7753044444444444444444444444444444444444 0DF19-16384542 15367
2. ナレッジポイントの準備:
いくつかの価値のあるリンク:
3. 一般的なティアオフ コード:
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
ポストオーダーを理解していないので、それを通過するかどうかを判断するためにプレノードが必要ですか? ?