owned this note
owned this note
Published
Linked with GitHub
---
title: info2023-homework3
tags: info2023
---
# 資訊科技產業專案設計課程 HW3
## 工作職缺
#### [Software Engineer, Embedded Software, Google Home Nest](https://www.google.com/about/careers/applications/jobs/results/127645769529205446-software-engineer-embedded-software-google-home-nest?company=Google&company=YouTube&employment_type=FULL_TIME&hl=en_US&jlo=en_US&location=Taiwan&q=Computer+Vision,+Software+Engineering&sort_by=relevance&src=Online/House+Ads/BKWS_Cloud_APAC)
:::spoiler Learn more
*Minimum qualifications:*
* Bachelor's degree in Electrical *Engineering, Computer Science, relevant technical field, or equivalent practical experience.
* Experience with C/C++.
* Experience with data structures or algorithms.
*Preferred qualifications:*
* Experience in one or more of the following areas: networking, embedded Linux, network security, wireless technologies, and data analysis.
* Excellent ownership, problem-solving skills, and willingness to learn/grow.
* Interest in IoT and smart home technologies.
*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.
* As part of building an intelligent and useful home, the Google Nest Connectivity team creates and optimizes our Google Nest Wifi family of smart mesh systems that serve households all over the world. We make consumer Wi-Fi mesh products and aim at delivering a lightning fast and extremely reliable home Wi-Fi solution that can be tailored to each family member's need.
* The Google Nest team focuses on hardware, software and services offerings for the home, ranging from Nest thermostats to Nest smart displays. The Nest team researches, designs, and develops new technologies and hardware to make users’ homes more helpful. Our mission is the helpful home: to create a home that cares for the people inside it and the world around it.
*Responsibilities:*
* Design and develop the device software stack for next generation Smart Home router and mesh networking software. Work across the entire stack from kernel, driver, cutting-edge wireless, and wired connectivity technologies all the way to future connectivity services in user space.
* Work cross-functionally with adjacent Google Nest products and Google Cloud/App teams.
* Write robust, performant, and maintainable code.
* Contribute to device software architecture to enable future Nest Wifi product strategy.
* Own full software cycle from prototype, design, development, testing, integration, debugging to product launch and collaborate with cross-functional teams including PM, UX, EngProd, and Partner Engineering.
:::
#### [Senior Software Engineer, Machine Learning, Pixel (English)](https://www.google.com/about/careers/applications/jobs/results/95728691956327110-senior-software-engineer-machine-learning-pixel-english?company=Google&company=YouTube&employment_type=FULL_TIME&hl=en_US&jlo=en_US&location=Taiwan&q=Computer+Vision,+Software+Engineering&sort_by=relevance&src=Online/House+Ads/BKWS_Cloud_APAC)
:::spoiler Learn more
*Minimum qualifications:*
* Bachelor's degree in Computer Science, a related technical field or equivalent practical experience.
* 5 years of experience in software development in one or more general purpose programming languages: Java, C/C++ or Python.
* Experience in Machine Learning.
* Ability to communicate in English fluently.
*Preferred qualifications:*
* Master's degree or PhD in Computer Science or a related field.
* Experience with machine learning frameworks (e.g., TensorFlow), and data analysis tools (e.g., Jupyter).
* Knowledge of optimizing/architecting software solutions for machine learning.
*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.
* As a Software Engineer, you will develop software on Android platforms and enable experience in Android platforms and Pixel products.
* Making the world's information universally accessible and useful doesn't stop at the desktop. The Mobile team builds tools to get you the information you need no matter where you are. Android has become the world's most popular mobile ecosystem, powering billions of devices, from smartphones to tablets, watches to TVs and everything in between. Whether adding to the core Android experience, forging new markets for digital content, creating immersive and portable versions of our products or managing relationships with a global community of developers, the Mobile team is giving you Google on the go.
*Responsibilities:*
* Collect external and internal data sets, employ data processing/transformation and define novel training objectives.
* Review SOTA research papers, and propose and test hypotheses.
* Identify and isolate a core problem solvable with Machine Learning (ML).
* Build, evaluate and iterate over the ML models, and integrate models with the production system.
:::
#### [Research Engineer](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MRTW20200311000?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3D%26order%3D%26page%3D1%26searchKey%3DVision%26category%3D%26workExp%3D%26branch%3D%26program%3D)
:::spoiler Learn more
*Job Description:*
* MediaTek Research (MRTW) is looking for aspiring ML/DL candidates to assist our team of researchers. The ideal candidate is open-minded, passionate about learning the learning theory, and keen on the opportunities to challenging convention.
* In a flexible and supportive environment, one of your major responsibilities is to assist your worldwide colleagues to develop innovative Deep Learning theories. Another is to apply modern Deep Learning theories to real world novel applications and methodologies.
* We welcome all ML/DL backgrounds, including computer vision, speech and NLP, and robotics.
*Requirement:*
* Qualifications
1. Advanced degrees (MSc or above) in Mathematics, Computer Science, Electrical Engineering, or an equivalent degree in a related field.
2. Participated in applying DL/ML to real world problems in a non-black box fashion.
3. (Optional for fresh grads) Publications in the main portion of DL/ML conference as the main authors
:::
#### [Product Developer (影像分析應用開發)](https://career.synology.com/zh-tw/HQ/position/185)
:::spoiler Learn more
*職務需求:*
*You are expected to have:*
- Proficiency in C/C++ and JavaScript
- Experience with or a strong understanding of computer vision and deep learning applications and processes
- Familiarity with programming in Linux environments
- Excellent communication skills and the ability to work well alone or as part of a team
*We're targeting candidates with:*
- Experience in developing real-time video analytics applications
- Experience with concurrent programming / multi-threading techniques
- Good understanding of Linux fundamentals and networking
- Experience with TensorRT, OpenVINO and other inference engines
- A fondness for automating everything and exploring new technical skills
*部門介紹:*
* Synology's product developers create cutting-edge products used by millions of users around the world. Our portfolio of data storage, networking, and surveillance products are powered by our own software solutions, giving us a unique edge in today's crowded market. We are looking for engineers that can make an impact, bringing in fresh ideas from different areas to help expand our team of high-energy developers.
*職務說明:*
* Video surveillance solutions are ubiquitous and vital in maintaining accountability in our society today. They can serve as silent witnesses to a scene, act as a deterrent, and often simply serve as a means to reassure a property owner. Synology has been consistently innovating in the field of video surveillance, leveraging our storage expertise to built robust, feature-rich, and cost-effective solutions that are overseeing countless locations today. You’ll be joining an experienced team to build our next generation products.
*You will:*
- Create more capable video surveillance solutions using computer vision and deep learning techniques
- Develop user-facing frontend applications using JavaScript
- Optimize for performance and increase the reliability and capabilities of the entire system, whether through traditional or more creative techniques
- Stay on top of cutting-edge machine learning developments and techniques
:::
#### [AI Software Platform Engineer (Multiple Levels) in Taipei, Taiwan](https://qualcomm.dejobs.org/taipei-twn/ai-software-platform-engineer-multiple-levels/6A2D79B3F91047F7870353902063B6E5/job/)
:::spoiler Learn more
*Minimum qualifications:*
* Bachelor's degree in Computer Science, Electrical Engineering, or related field.
* 6+ years Software Engineering or related work experience.
* Good experience with Programming Language such as C, C++, Java, Python etc.
* Experience in large-scale software project.
* Familiar with at least one of Unix, Android, embedded Linux and Windows development environments.
* 3+ years building and managing a team of software engineers.
* Strong communication skills required, including the ability to clearly express technical and team leadership related concepts in verbal and written forms.
* Ability to speak and write in English fluently.
*Preferred qualifications:*
* 10+ years of software experience within the wireless, telecommunications, 3C consumer devices or semiconductor industry.
* Solid C/C++, Python skills and embedded programming skills.
* Experience in working on open-sourced project including initiating, contributing or leveraging.
* Experience in any of Linux/Android/Windows software development in user space or kernel space.
*Expertise in at least one of the following areas:*
* DSP software development and algorithm implementation.
* OpenCL programming and debugging.
* Performance profiling and optimization for parallel computing.
* Image processing, computer vision, and object/face detection specially.
* Understand compiler technology: Familiar ML compilers such as TVM/Glow/XLA, LLVM/GCC backend development, optimization analysis and implementation is plus
* AI experience: Deep Learning/CNN basic knowledge, training network to solving practical problems, familiar with Tensorflow/Pytorch framework etc. is plus.
* Enthusiasm in machine learning technology. Hand-on experience in design/implementation of deep learning networks via modern frameworks, including TensorFlow, Pytorch, etc.
* Ability to quickly learn new technologies and work on resolving customer reported technical problems during mobile or wireless communication product development cycles.
* Excellent analytical, problem solving and Communication skills and willingness to work with customers.
*Job Area:*
* Engineering Group, Engineering Group > Machine Learning Engineering
*Qualcomm Overview:*
* Qualcomm is a company of inventors that unlocked 5G ushering in an age of rapid acceleration in connectivity and new possibilities that will transform industries, create jobs, and enrich lives. But this is just the beginning. It takes inventive minds with diverse skills, backgrounds, and cultures to transform 5Gs potential into world-changing technologies and products. This is the Invention Age - and this is where you come in.
*General Summary:*
* Qualcomm is a company of inventors that unlocked 5G - ushering in an age of rapid acceleration in connectivity and new possibilities that will transform industries, create jobs, and enrich lives. But this is just the beginning. It takes inventive minds with diverse skills, backgrounds, and cultures to transform 5Gs potential into world-changing technologies and products. This is the Invention Age - and this is where you come in.
* Do you want to work in the biggest emerging field of technology since the birth of the Internet? Machine learning is going to change EVERYTHING. We are rapidly expanding our AI Software Engineering team in Taiwan. This team has been working with a large number of other AI R&D teams around the world. We invite you to join this team to apply your skills to expand Qualcomm’s already impressive AI portfolio (known as Qualcomm AI Stack) , with a special focus on software platform to fulfill AI applications for Mobile, Automotive, IoT and HPC devices. We combine high performance software with cutting edge hardware to run deep neural networks fast, and we do it with the lowest power on our incredible range of Snapdragon processors. In this position you will be responsible for enabling advanced machine learning usage scenarios on top of Qualcomm’s hardware and software infrastructure and participate in system software, tools development, maintenance and evolution for various ML computing SDK for Qualcomm processors. To extend SDK’s capability and applicability, you will work with neural network frameworks like Pytorch and TensorFlow, extend our neural net engine to support the latest and greatest DNNs emerging from the research community, and optimize for next generation hardware acceleration cores. You will also validate the performance and accuracy of the engine through detailed analysis and test coverage. Live and breathe software development with excellent analytical, development, and debugging skills and partner with industry-leading organizations for delivering next generation of machine learning technology into the hands of millions.
:::
## 專業上匹配程度評估
### Computer Vision and Machine Learning Jobs
* Programming Skills: Proficiency in at least one programming language, such as C/C++, Java, Python, etc., with relevant software development experience.
* Deep Learning and Machine Learning: Understanding or experience in machine learning and deep learning applications, including frameworks like TensorFlow, Pytorch, etc.
* Software Development Experience: Experience in software development for large-scale projects, the ability to optimize performance, and solve complex problems.
* Operating System Familiarity: Familiarity with Linux operating systems, or a basic understanding of Linux.
* Image Processing and Computer Vision: Knowledge or experience in image processing and computer vision, especially in areas like object/face detection.
* Communication and Networking Knowledge: Understanding of networking and communication fundamentals, with a preference for those interested in wireless technologies and network security.
* English Proficiency: Ability to communicate fluently in English, both verbally and in writing.
### 自我評估
* 非純血電資:中央物理,成大AI類,系所名稱人資可能不知道(敏求學院)
* 具備 Computer Vision 和 Machine Learning 相關背景和實作經驗
* 研究有用到攝影機和要求要real-time
* 研究與企業合作
* 研究是針對人臉辨識相關領域
* 缺乏 Android,嵌入式Linux,Java,JavaScript 等應用開發能力
## 模擬面試
🧔:interviewer 👶:interviewee
🧔:您好,今天會由我來主持這場面試。可以請你先簡單介紹一下自己嗎?
👶:您好我是XXX,目前就讀國立成功大學人工智慧科技碩士學位學程,預計2024年8月畢業。研究領域為**電腦視覺與深度學習**,主要應用**人臉辨識與動作偵測**應用到在排球比賽過程中,在場邊觀看的觀眾。例如開發應用"超級明星臉-我是金城武"提供比賽過場休息時間的娛樂展示。在學期間學習如何自檢撰寫程式控制相機,以及各種優化技巧以達到及時效果。在學期間,除了學習到技術外,更重要的是要如何與廠商溝通還有在計畫案中與上級溝通。我平常也留意AI技術在其他領域的發展,跟實驗室同學討論。
🧔:您有提到動作偵測"超級明星臉-我是金城武"這種應用,你可以具體講一下你的做法嗎?
👶:“超級明星臉-我是金城武”,該旨在辨識出與明星相似度最高的觀眾,使用群眾定位技術,並且取得臉部眼睛、鼻子和耳多的定位後,為了達到即時效果,先計算5者的距離後匹對誰跟金城武最像,並在大螢幕上進行展示,以增強觀眾互動。

* 上圖是“超級明星臉-我是金城武”的呈現畫面,匹配最像是金城武的觀眾會以紅色框框標記。右上角是比對相似度,右下角是追蹤ID。
🧔:請描述您如何利用C/C++來優化數據結構或算法,以提高智能家居路由器的性能和效率。同時,請給出一個具體的範例,說明您是如何在過去的項目中實現這種優化的。
👶:首先,我會重點關注了數據結構的選擇和算法效率。舉例來說,我會使用了自定義的B+樹數據結構來優化路由表的查找和更新操作。這是因為B+樹在處理大量節點時,其平衡樹的特性能有效減少磁盤I/O操作,從而提高效率。
除此之外,我會算法層面進行了微優化。例如,在處理網絡流量分析時,利用了快速排序算法的變體,這個變體特別適用於處理大規模且部分預排序的數據集,從而提高了排序速度和整體處理效率。
最後,在代碼層面進行了細微調整,比如避免不必要的記憶體分配和釋放,並使用內聯函數來減少函數調用的開銷。這些優化在綜合測試中可以顯著提高了路由器的數據處理能力和響應速度。
🧔:請描述如何利用光流(Optical Flow)技術來改進觀眾在大型活動中的人群辨識和管理。具體來說,您會如何設計一個系統來檢測和分析人群的運動模式,並且該系統將如何幫助提高安全性和提升觀眾體驗?
[Optical Flow介绍与代码实现](https://zhuanlan.zhihu.com/p/44859953)
👶:光流技術可以有效地用於分析大型活動中人群的運動和行為模式。首先,我會設計一個系統,使用多個攝像頭來捕捉活動現場的影像。這些影像會被用來分析人群的流動方向、速度和密度。
具體來說,我會利用光流算法來檢測每個像素點在連續幀之間的運動。通過這種方法,我們可以識別人群中的異常運動模式,比如快速聚集或分散,這些可能是安全隱患的指示。同時,這項技術也能幫助我們理解人群流動的主要路徑和擁堵區域,從而進行有效的人流控制和引導。
此外,這個系統還可以與事件管理系統集成,以實時反饋人群狀態,幫助活動組織者快速做出決策,比如調整場地布局或增加安保人員。這不僅能提高安全性,也能提升觀眾的整體體驗,讓他們在活動中感到更加舒適和安全。