# 資訊科技產業專案設計 HW4
###### tags: `資訊科技產業專案設計`
### 匹配程度
pros:
* java, web 相關開發經驗
* 明年升上研究所, 研究領域將選擇 embedded system 相關領域
cons:
* 目前無 Linux embedded system 軟體開發經驗
自我檢討:
* 透過網路課程複習作業系統以及計算機架構
* 下學期修習 linux 核心設計來熟悉 linux system 相關開發
* 加強對於 c 語言觀念的掌握
### [REALTALK - 嵌入式多媒體軟體開發工程師(大直)](https://recruit.realtek.com/zh/index.php?option=com_content&view=article&id=10035)
:::spoiler
* 工作經驗: 0年
* 工作地點: 台北市中山區
* 學歷要求: 碩士
* 工作項目:嵌入式多媒體軟體開發
1. 開發與移植多媒體軟體平台
2. 嵌入式系統架構移植
3. 分析及改善多媒體系統效能
* 應徵條件:
1. 具Linux embedded system 軟體開發經驗
2. 熟悉 C/C++, makefile. 具python/Java開發經驗
3. 熟悉webkit/web app framework 者尤佳
4. 具多媒體軟體開發經驗
:::
### 相關問題
[軟韌體面試心得分享:啟碁、凌陽、瑞昱、聯陽、聚星、旺宏、群聯(上)](https://medium.com/cubemail88/%E8%BB%9F%E9%9F%8C%E9%AB%94%E9%9D%A2%E8%A9%A6%E5%BF%83%E5%BE%97%E5%95%93%E7%A2%81%E5%87%8C%E9%99%BD%E7%91%9E%E6%98%B1-99b3b811840)
觀念題:
* 解釋critical section
* 解釋c++ reverse、resize差異
* print static variable 在 function 中的結果為何
* char *s = “hello”; char s1[]={‘h’,’e’,’l’,’l’,’o’}; int s2[]={‘h’,’e’,’l’,’l’,’o’}; 分別求 sizeof(s), sizeof(s1), sizeof(s2)
* define 的使用,常見考題類似 square(3+4) ,寫出輸出結果
* C++ dynamic_cast、static_cast差異
* C++ virtual function
白板題:
1. 利用一個 array 然後建立一個 single linked list
:::spoiler 嘗試實作
```cpp
#include <iostream>
#include <vector>
using namespace std;
class ListNode {
public:
int val;
ListNode *next;
ListNode(int value);
};
ListNode::ListNode(int value){
val = value;
next = NULL;
}
class LinkedList {
public:
ListNode*head;
void print();
void reverse();
void deleteNode(int val);
};
void LinkedList::print() {
ListNode* cur = head;
while(cur) {
cout << cur->val << ' ';
cur = cur->next;
}
}
int main() {
vector<int> v{1, 2, 3};
LinkedList* list = new LinkedList();
ListNode* cur;
for(int i = 0; i < v.size(); i++) {
if(list->head) {
cur->next = new ListNode(v[i]);
cur = cur->next;
} else {
list->head = new ListNode(v[i]);
cur = list->head;
}
}
list->print();
}
```
:::
2. reverse linked list
:::spoiler 嘗試實作
```cpp
void LinkedList::reverse() {
ListNode* first, *second, *third;
first = head;
second = first->next;
head->next = NULL;
while(second) {
third = second->next;
second->next = first;
first = second;
second = third;
}
head = first;
}
```
:::
3. delete node from linked list with given number
:::spoiler 嘗試實作
```cpp
void LinkedList::deleteNode(int val) {
ListNode* cur = head;
if(cur->val == val) {
head = head->next;
return;
}
while(cur->next) {
if(cur->next->val == val)
break;
cur = cur->next;
}
if(cur->next) {
cur->next = cur->next->next;
}
}
```
:::
### [Qualcomm - Embedded Platform Software Engineer in San Diego, California](https://qualcomm.dejobs.org/san-diego-ca/embedded-platform-software-engineer/5DB13E0907864759B51CC18E20C0DDD2/job/)
:::spoiler
* Company:
Qualcomm Technologies, Inc.
* Job Area:
Engineering Group, Engineering Group > Software Engineering
* General Summary
Qualcomm is looking for software engineers to develop embedded software for CPU and DSP processors and hardware engines comprising its SoC portfolio. In this role you will utilize your solid foundation in embedded software development, operating systems, and drivers to deploy platform software for complex multimedia and machine learning use cases running on our SoC’s.
* The ideal candidate will have a Bachelor’s and/or Master’s degree in Engineering, Information Systems, Computer Science, or related field, and 0-2 years experience in:
* Programming in C/C+• Operating Systems and multi-threaded programming
* Hardware drivers
* Developing, debugging, profiling, and optimizing for embedded real-time environments.
* Inter-processor communications
* Computer architecture
* Multimedia software development experience on Android, Windows or Linux
* Shell/Python scripting
* The responsibilities of this role include:
* Architect, design and develop multimedia frameworks across the processors available on the SoC.
* Develop high-performance system drivers for compute resources.
* Work closely with our global team to integrate, test, and commercially support our embedded software.
* Offsite and occasional onsite work with OEMs and Independent Software Vendors may be required
* Physical Requirements
* Frequently transports between offices, buildings, and campuses up to ½ mile.
* Frequently transports and installs equipment up to 5 lbs.
* Performs required tasks at various heights (e.g., standing or sitting).
* Monitors and utilizes computers and test equipment for more than 6 hours a day.
* Continuous communication which includes the comprehension of information with colleagues, customers, and vendors both in person and remotely."
* Minimum Qualifications
Education:
Bachelors - Computer Science, Bachelors - Engineering, Bachelors - Information Systems
Work Experiences:
1+ years experience with Programming Language such as C, C++, Java, Python, etc.
Certifications:
Skills:
Preferred Qualifications
Education:
Work Experiences:
1+ years experience working in a large matrixed organization. ,1+ years experience with Database Management Software. ,1+ years experience with API.
Certifications:
Skills:
Mathematical Methods, Object-Oriented Programming (OOP), Scientific Analysis, Software Development Lifecycle (SDLC), Software Solutions
:::
### 相關問題
[Qualcomm11月6号onsite面经加时间线](https://1o24bbs.com/t/topic/1575)
[[心得] 新鮮人面試心得(ByteDance/Qualcomm)](https://ptt-life.com/Soft_Job/M.1614699034.A.FD4)
觀念題
* 巨集和函式的差別,各自的優缺點
* double pointer 的用法
* C 語言 main function 的參數(int argc, char *argv[])是什麼
程式題
1. 給一個 sorted array 找出 two sum,但是不能用任何 data structure,要求 O(n)
::: spoiler 嘗試實作
``` c++
vector<int> twoSum(vector<int>& nums, int target) {
int i = 0, j = nums.size() - 1;
while(i < j) {
int sum = nums[i] + nums[j];
if(sum > target) {
j--;
} else if(sum < target) {
i++;
} else {
break;
}
}
return vector<int>{i, j};
}
```
:::
2. 不用建立Temperary variable如何swap两个数字
::: spoiler 嘗試實作
``` c++
void swapWithoutTempVariable(int &a, int &b) {
a ^= b;
b = a ^ b;
a = a ^ b;
}
```
:::