Try   HackMD

資訊科技產業專案設計課程作業 4

貢獻者:勾陳一 Cynosure

tags: 資訊科技產業專案設計

Software Engineer, Nest Intelligence, Perception Algorithms - Google

1. 自 IC 產業結構和軟體工程師的機會 列出的 IC 設計公司的官方網站中,找出較符合自身興趣/規劃的職務描述 (即 JD,至少找出二份) & 分析上述職缺所需要的能力,探討自己在專業上匹配的程度

  • 職缺一:Software Engineer, Nest Intelligence, Perception Algorithms - Google
  • 總結
    • 透過修課可以達到工作minimun的要求,其他專業能力可以在準備期間自主加強。但是一年工作經驗是自己的弱點,可能可以透過實習或加入實驗室研究工作彌補。
  • 逐項列出職缺需要的能力以及自己在各項的專業匹配程度。
    • Minimum qualifications:
      • Bachelor's degree in Electrical Engineering, Computer Science or relevant technical field or equivalent practical experience.
        -> 成大不分系(資工統計雙專長)畢業
      • 1 year of experience in computer vision and Image processing.
        -> 無一年工作經驗。大學期間透過相關的實習/實驗室研究,彌補缺少的經驗。
      • Experience with one or more programming languages (C, C++, Python, etc.).
        -> 透過大學修課了解C/ C++/ Python 基礎概念,可以正確地使用,完成指定的功能。
        -> 課程作業程式github連結:C : 程式設計(一)課程/ C++ : 資料結構課程計算機概論與程式語言課程/ Python : 基於遊戲的機器學習課程
    • Preferred qualifications:
      • Experience with implementing compute-heavy algorithms on embedded systems.
      • Experience successfully launching one or multiple AI/ML-powered user-facing products.
      • Experience and domain expertise in latest computer vision and machine learning algorithms.
        -> 修過「計算理論」、「計算幾組織」課程。
        -> 自主上網完成至少一個AI/ML-powered使用者介面,以及自行上網搜尋了解最近的 computer vision and machine learning algorithms。
  • 職缺二:Algorithms Engineer, Video Architecture - NVIDIA
  • 總結:透過修課可以達到工作minimun的要求,其他專業能力可以在準備期間自主加強。但是一年工作經驗是自己的弱點,可能可以透過實習或加入實驗室研究工作彌補。
  • JD : 逐項列出職缺需要的能力以及自己在各項的專業匹配程度。
    • What will you'll be doing:
      • Master our Video Algorithms and Architecture
      • Research and evaluate algorithms currently used in related applications
      • Possess strong skills in the areas of development and real-time implementation of video Encoder/Decoder
      • Participate in research and developing new video codec tools
      • Design and implement video compression algorithms to improve quality/performance
      • Design new algorithms to tackle new and existing problems
    • What we need to see:
      • B.Sc. or equivalent experience in Computer Science or Electrical/Computer Engineering
      • 1+ years of relevant experience in the industry (or a relevant M.Sc.)
      • Experience in OOP/OOD with C++ and Python
        ->無物件導向相關經驗,需要在準備期間補上。
      • Passion for problem solving and Algorithms’ research and development
    • Ways to stand out from the crowd:
      • Actual experience with C++/Python Algorithmic Frameworks such as OpenCV, Numpy, SciPy, CuPy, matplotlib, etc.
      • Working knowledge of one of the most popular Artificial Intelligence development frameworks (e.g Tensorflow, PyTorch, Keras, etc.)

2. 嘗試列出上述職缺 (或類似的職缺) 的面試題目,可以是網路搜尋整理,也可以自行改寫 & 面試問題問答

  • 參考文章:Google software engineer interview: the only post you'll need to read
  • Question1:
    • coding interview : "Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree." (Solution)
  • Answer1:
    • interviewee : I have a question here, could I visit a node repeatedly?
    • interviewer : No, the path must be a single line in this question. Any question else?
    • interviewee : First, I think I should solve this problem from the button to the top. But I am still thinking about the steps in detail…
    • interviewer : This is a correct starting point. Maybe you can think about the situations of the path.
    • interviewee : Hummm…If here is a node at the middle level of a binary tree(not leaf nor head). We have two choices. First, connect it with both children. Second, connect it with bigger children and connect with its parent…
Oh, I come up with a solution. We solve it from the bottom to the top, every time we return two values. One is that node’s value plus two children’s return value(that value is the maximum sum of the node’s path). Second, plus bigger children’s value and return to upper level’s node.
Now, we got every path’s maximum value. At the end, we should return the biggest value. In this step I prefer to use a variable to record the biggest value.
    • intreviewer : It seems like you solve most of the cases. But there is a situation you didn’t consider, can you figure it out?
    • intreviewee : Do you mean when there is a negative value in the binary tree?
    • intreviewer : Yes.
    • intreviewee : If any node return negative value to its parent, I will rewrite it to zero. Because we can choose not to connect this path.
    • intreviewer : Okay, you have think through this problem correctly.