インターンシップのロードレコード

自分自身を励ましましょう。進捗。継続的に更新されます。

対象職種:アルゴリズムエンジニア、開発エンジニア、テストエンジニア

追記:よく考えてみると、論文はまだコーディング能力はあるものの、イノベーション能力が少し弱いような気がするので、開発エンジニアに注力するかもしれません。

1. 対面体験の概要:

1. NetEase、Didi、iQiyi、Ping An Technology、Sina Algorithm

インターンシップ Face-to-face Sharing_Penjing Face-to-face_Niuke.com過去数か月間のインタビューを要約します。この旅は確かに簡単ではありません。インタビューされた主な企業は次のとおりです: Netease + Didi + iQiyi + Ping An Technology + Sina Netease Artificial Intelligence Intern https://www.nowcoder.com/discuss/155532

2. Sangfor、Tencent、Byteの開発経験

毎日のインターンシップ インタビュー_Penjing Interview_Niuke.com毎日のインターンシップ インタビュー 納得のポジション: 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/interview https://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_nctrack https://www.nowcoder.com/discuss/681294?type=post&order=recall&pos= &page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack

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. ナレッジポイントの準備:

いくつかの価値のあるリンク:

C++基礎知識事典_clw_18のブログ - CSDN Blog秋採用もほぼ固まったので、C++学習ルートの関連知識をまとめていこうと思います、今日は第一回目の記事「C++基礎知識まとめ」です。オブジェクト指向の 3 つの主要な特徴: 1. カプセル化: 独自の属性やメソッドを含むオブジェクトをクラスに抽象化します。2. 継承: 元のクラスを書き換えることなく、既存のクラスの機能をすべて使用してクラスの機能を拡張します。継承されたクラスは親クラスまたは基本クラスになり、継承されたクラスはサブクラスまたは派生クラスになります。3. ポリモーフィズム: 1 つの形式、複数の状態。静的ポリモーフィズムと動的ポリモーフィズムに分けられます。静的多態性は、関数のオーバーロードやテンプレートなどのコンパイル時の多態性を指します。動的多態性は、実行時の多態性、特に仮想仮想関数メカニズムによって形成される多態性を指します。クラスのアクセス権: プライベート、保護されているhttps://blog.csdn.net/weixin_49199646/article/details/121066029

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

ポストオーダーを理解していないので、それを通過するかどうかを判断するためにプレノードが必要ですか? ?

おすすめ

転載: blog.csdn.net/candice5566/article/details/121666343