Try   HackMD

職缺探索

Google-Software Engineer II, AI/ML, Account Threats

JD

About the job

Google's software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another. Our products need to handle information at massive scale, and extend well beyond web search. We're looking for engineers who bring fresh ideas from all areas, including information retrieval, distributed computing, large-scale system design, networking and data storage, security, artificial intelligence, natural language processing, UI design and mobile; the list goes on and is growing every day. As a software engineer, you will work on a specific project critical to Google’s needs with opportunities to switch teams and projects as you and our fast-paced business grow and evolve. We need our engineers to be versatile, display leadership qualities and be enthusiastic to take on new problems across the full-stack as we continue to push technology forward.

In Google Search, we're reimagining what it means to search for information – any way and anywhere. To do that, we need to solve complex engineering challenges and expand our infrastructure, while maintaining a universally accessible and useful experience that people around the world rely on. In joining the Search team, you'll have an opportunity to make an impact on billions of people globally.

Responsibilities

Collaborate with a diverse group of engineers in Real World Journeys.
Work in a fast moving team on projects which make direct impact on key search metrics.
Contribute to building features on Search where content we acquire from partners blends with traditional web content.

職缺所需要的能力分析

Minimum qualifications:

  • 學士學位或同等實務經驗
    • 學士&碩士皆為資工系
  • 擁有 1 年使用一種或多種程式語言(例如 Python、C、C++、Java、JavaScript)進行軟體開發的經驗
    • 刷題使用 C++,開發多使用 Python,前端開發中接觸過 JavaScript
  • 1 年資料結構或演算法經驗
    • 在校修課有基礎知識與經驗

Preferred qualifications:

  • 電腦科學、機器學習、相關領域的碩士學位,或同等的實務經驗
    • 學士&碩士皆為資工系
  • 擁有 2 年開發和部署機器學習模型的經驗,尤其是深度學習或自然語言處理技術
    • 大學與研究所專題接與深度學習相關,碩一時也參與過自然語言處理相關的專案
  • 擁有 2 年機器學習基礎設施或應用程式中大規模分散式系統的經驗
    • 對於大規模分散式系統開發沒有相關經驗
  • 擁有對抗空間、詐欺偵測或其他反濫用領域的經驗
    • 沒有相關領域的開發經驗
  • 熟悉 TensorFlow 或類似框架
    • 開發主要使用 Pytorch 框架, 也有使用 TensorFlow 開發的經驗
面試題目
  1. 解釋CNN、RNN差別,Resnet原理以及好處。
  2. 推導Backpropagation。(題目會附上一張back propagation的圖,請你推導如何更新某個節點的weight。)
  3. 要如何做 Hyper-parameter tuning,請說明方法及原因。
  4. 如果資料類別極度不平衡,建立模型後在測試集依然達到了99%的準確度(Accuracy),這會造成什麼問題?
  1. 為什麼在這個專案中要使用這個模型,有沒有做過其他模型效能的實驗
  2. 如果這個模型太大,算力成本無法支持時有什麼替代方案
  3. 之前你說你有微調過開源大模型,可以說的更細一點嗎
  4. 問LoRA的原理,我之前做專案的時候是怎麼選擇Rank要設多少的
  5. 問量化的技術,混精度訓練時要怎麼做

出處 :

Google-Software Engineer II, Full Stack

JD

About the job

Google's software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another. Our products need to handle information at massive scale, and extend well beyond web search. We're looking for engineers who bring fresh ideas from all areas, including information retrieval, distributed computing, large-scale system design, networking and data storage, security, artificial intelligence, natural language processing, UI design and mobile; the list goes on and is growing every day. As a software engineer, you will work on a specific project critical to Google’s needs with opportunities to switch teams and projects as you and our fast-paced business grow and evolve. We need our engineers to be versatile, display leadership qualities and be enthusiastic to take on new problems across the full-stack as we continue to push technology forward.

In Google Search, we're reimagining what it means to search for information – any way and anywhere. To do that, we need to solve complex engineering challenges and expand our infrastructure, while maintaining a universally accessible and useful experience that people around the world rely on. In joining the Search team, you'll have an opportunity to make an impact on billions of people globally.

Responsibilities

Collaborate with a diverse group of engineers in Real World Journeys.
Work in a fast moving team on projects which make direct impact on key search metrics.
Contribute to building features on Search where content we acquire from partners blends with traditional web content.

職缺所需要的能力分析

Minimum qualifications:

  • 學士學位或同等實務經驗
    • 學士&碩士皆為資工系
  • 擁有 1 年使用一種或多種程式語言(例如 Python、C、C++、Java、JavaScript)進行軟體開發的經驗
    • 刷題使用 C++,開發多使用 Python,前端開發中接觸過 JavaScript
  • 1 年資料結構或演算法經驗
    • 在校修課有基礎知識與經驗
  • 擁有 1 年全端開發經驗,跨後端(例如 Java、Python、GO 或 C++ codebases)以及前端經驗(包括 JavaScript 或 TypeScript、HTML、CSS 或同等內容)
    • 使用過 Python Web 後端的 Django 和 Flask 框架;前端開發則使用 React 框架,接觸過 JavaScript, TypeScript, HTML, CSS

Preferred qualifications:

面試題目

1. Graphs / Trees (39% of questions, most frequent)

"Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree."
"Given an encoded string, return its decoded string."
"We can rotate digits by 180 degrees to form new digits. When 0, 1, 6, 8, 9 are rotated 180 degrees, they become 0, 1, 9, 8, 6 respectively. When 2, 3, 4, 5, and 7 are rotated 180 degrees, they become invalid. A confusing number is a number that when rotated 180 degrees becomes a different number with each digit valid.(Note that the rotated number can be greater than the original number.) Given a positive integer N, return the number of confusing numbers between 1 and N inclusive."
"Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest transformation sequence from beginWord to endWord, such that: 1) Only one letter can be changed at a time and, 2) Each transformed word must exist in the word list."
"Given a matrix of N rows and M columns. From m[i][j], we can move to m[i+1][j], if m[i+1][j] > m[i][j], or can move to m[i][j+1] if m[i][j+1] > m[i][j]. The task is print longest path length if we start from (0, 0)."
"Given a robot cleaner in a room modeled as a grid. Each cell in the grid can be empty or blocked. The robot cleaner with 4 given APIs can move forward, turn left or turn right. Each turn it made is 90 degrees. When it tries to move into a blocked cell, its bumper sensor detects the obstacle and it stays on the current cell. Design an algorithm to clean the entire room using only the 4 given APIs shown below."

2. Arrays / Strings (26%)

Implement a SnapshotArray that supports pre-defined interfaces (note: see link for more details).
"In a row of dominoes, A[i] and B[i] represent the top and bottom halves of the i-th domino. (A domino is a tile with two numbers from 1 to 6 - one on each half of the tile.) We may rotate the i-th domino, so that A[i] and B[i] swap values. Return the minimum number of rotations so that all the values in A are the same, or all the values in B are the same. If it cannot be done, return -1."
"Your friend is typing his name into a keyboard. Sometimes, when typing a character c, the key might get long pressed, and the character will be typed 1 or more times. You examine the typed characters of the keyboard. Return True if it is possible that it was your friends name, with some characters (possibly none) being long pressed."
"Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n)."
"Given a list of query words, return the number of words that are stretchy." Note: see link for more details.
"Given an array of words and a width maxWidth, format the text such that each line has exactly maxWidth characters and is fully (left and right) justified."

出處 :

NVIDIA-AI Algorithm Software Engineer - New College Graduate

JD

NVIDIA is searching for Deep Learning algorithms architect to develop artificial intelligence (AI), computer vision algorithms and applications for our Metropolis for Factories and Manufacturing platforms. Artificial Intelligence is transforming how we collect, inspect, and analyze different kinds of sensor data that impacts everything from manufacturing automation, warehouse management, product inspections to safety workflows. NVIDIA Metropolis is leading this AI revolution, providing the tools, technologies, and expertise to meet every challenge with smarter, faster applications.

This challenging role will require someone who deeply understands and can architect algorithms with Large Language and Multi-modal (LLM/LMM) Foundation models to advance the application of artificial intelligence and machine learning to the Manufacturing AI market. Practical experience in the use and the building of Computer Vision algorithms, models and tools will be critical.

What You’ll Be Doing :

  • Architect, analyze, develop, and prototype key deep learning algorithms and solutions as a core member of our growing software team.

  • Collaborate with diverse software, research, and hardware teams across geographies to analyze the interplay of hardware and software architectures solve critical problems and future applications

  • Support engagements with customers and their third-party software providers. Collaborate with Product Management, Marketing, and Developer Technology teams.

  • Develop algorithms (such as zero/few-shot learning, unsupervised learning) to address data scarcity and collection challenges.

  • Utilize generative models (Diffusion, GANs, VAEs) for data generation to overcome data scarcity issues.

Ways To Stand Out From The Crowd :

  • Track record of contributions to academic publications in the field of AI/ML or open-source projects.
職缺所需要的能力分析
  • 電腦科學、電腦工程、電機工程或相關領域的碩士或博士學位,專注於深度學習、機器學習和電腦視覺。
    • 學士&碩士皆為資工系,且專題皆與深度學習相關
  • 在資料分析演算法開發方面擁有豐富的經驗,尤其是 LLMs 和 Multi-Modal Foundation models。擁有使用多模式資料集進行工作和管理的經驗。
    • 碩一時有過使用 LLM 與 多模態模型的經驗,多偏向應用
  • 具備演算法經驗,包括零/少樣本學習、自我監督和無監督學習技術、合成資料集的 generative AI models
    • 使用過 Generative Adversarial Network(GAN) 進行影像資料增量的經驗
  • 熟練使用 TensorFlow 和 PyTorch 等深度學習框架,具有較強的 Python 和/或 C++ 程式設計能力
    • 目前大多使用 PyTorch 框架進行開發,對於 Python 較為熟悉,C++ 則在刷題時使用居多
  • 較強的溝通能力及在協作環境中工作的能力
    • 有過多次團體開發經驗(實驗室計劃、專題、課堂作業等)
面試題目

參考第一項的 Google-Software Engineer II, AI/ML, Account Threats

面試參考資料

模擬面試

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: interviewer
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: interviewee

個人經歷簡介

大學期間的專題題目跟深度學習相關,透過一套篩選方式來將模型的運算量降低,以此讓模型更容易運行於邊緣裝置上,模型應用場域是AOI的焊錫瑕疵檢測,因此也有影像處理相關的經驗。在使用工具上,平常進行深度學習的開發是使用python,而日常寫leetcode則是使用C++,並且在碩一時也有實習經驗,當時接觸到的是前端的React框架,有搭配過Javascript, TypeScript, CSS, HTML 使用的經驗。此外,就讀碩士期間,參與過一些深度學習相關的專案,包含 LLM 應用、鋁擠業的異常偵測等。

(假設已先提供個人簡歷)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 你好,我是阿虎,今天的面試由我來主持。聽說你有豐富的深度學習和影像處理經驗。首先,我們先聊聊你的大學專題,聽說你當時的專題和深度學習及AOI焊錫瑕疵檢測有關,可以多介紹一下你們當時的專題目標以及所採用的技術嗎?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 你好,很高興能參加今天的面試!在大學的專題中,我們的目標是將深度學習模型應用於AOI焊錫瑕疵檢測,並且要確保模型能夠在邊緣裝置上順利運行。為了達成這個目標,我們主要做了模型的剪枝與量化,藉此減少計算量,同時保留了足夠的準確度。我們還透過影像處理技術做了資料增強,以增加模型的泛化能力。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 聽起來很實用!那在模型剪枝與量化的過程中,你有遇到什麼挑戰嗎?例如,在準確度與計算量之間的平衡該如何達到?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 模型剪枝與量化會不可避免地影響準確度,當時我們採用了逐層剪枝的方法,對權重影響較小的層進行減少,然後在量化的時候選擇了以動態範圍為基礎的量化方法,確保剪枝的同時不會損失太多準確度表現。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 很好,這樣的調整能力很重要。我還注意到你在研究所時進行了LoRA技術的研究,可以介紹一下LoRA的核心概念嗎?為什麼選擇這項技術應用在你的語言模型專案上?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: LoRA(Low-Rank Adaptation)是一種用於減少語言模型訓練成本的技術。它的核心概念是將大模型的權重矩陣分解為低秩矩陣,讓訓練時只需調整較小的參數集合,而不影響整體模型的結構。因為我們的專案希望在未來能夠應用到其他場域,因此需要在不同的任務間切換,而LoRA可以有效降低重新訓練的成本,因此在我們的應用中是很合適的。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 很清晰的解釋,這顯示你對於訓練資源的最佳化考量很周到。再來談談你在鋁擠業異常偵測的專案中,提到你設計了一個自適應系統來自動決定模型是否要重新調教。這樣的系統如何工作呢?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 在這個專案中,我們設計了一個偵測環境變動的模組,主要是透過數據漂移檢測(如KSWIN)來追蹤輸入數據特徵的變化。一旦偵測到新的數據分布明顯偏離舊的分布,我們的系統會啟動一個模型更新流程,重新收集數據並更新模型參數,藉此保持模型的準確性。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 這樣的流程設計很好。那麼,在選擇數據漂移檢測方法時,你是如何決定使用KSWIN的呢?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 我們選擇KSWIN是因為它對於異常值的敏感度較高且可以即時偵測數據分布的變化,也是我們經過多次實驗後得出的結果。相較於其他方法如EDDM或Adwin,KSWIN的設定較靈活,能根據特定參數來調整靈敏度。我們的應用場景變化較大,因此這樣的靈活性很有幫助。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 聽起來你們對於資料不平衡問題處理得很細緻,方法也很全面。這樣的經驗對於我們的應用場景也很有幫助。最後,對於未來你希望在深度學習或軟體開發方面,有什麼特別想專精或持續學習的方向嗎?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 我希望未來能更深入學習生成模型與自然語言處理的前沿技術,尤其是在低資源環境下的模型最佳化,這不僅能提升模型的應用範疇,也能增加模型在實際場景中的可用性。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
: 很棒的學習計畫。能看得出來你有很強的學習動力和清晰的規劃,這對我們團隊是非常寶貴的特質。我們今天的面試就到這裡,謝謝你分享這麼多寶貴的經驗和見解!後續我們會儘快通知你面試結果。