# 面試題
---
# 閱讀筆記
> https://www.explainthis.io/zh-hant/interview-guides/backend
>
### **什麼是 RESTful API?**
- API:可以不需要知道背後怎麼運作的介面,只需要會使用即可,Ex.點菜
- REST:無狀態、統一介面、分層、可緩存
- RESTful API: 可擴展性、靈活、獨立性(支援多種程式語言)、回應StatusCode
- GET、POST、PUT、PATCH、DELETE
---
### **什麼是 GraphQL**
- API 的查詢語言
---
### **什麼是 Nginx**
非同步框架的網頁伺服器,可做到
- **反向代理**
`**Client** <=> **Web Server** <=> **Application Server**`
Client 不需知道 Application Server 的位置;Application Server 不需知道 Client 是誰
Client 僅需要透過 Nginx 反向代理的方式向 Application Server 發送請求
- 可以實現負載平衡、提高網路安全性
- **負載平衡**
將 Client 的 Request 分送到不同 Application Server 上
- **http 快取**
---
### **什麼是快取**
以資料庫來說,如果新增(insert)資料的少但讀取(select)的request多,則可使用cache來減少資料庫負擔
- **Cache 的設計流程**
1. Application 展開
- **Read**:讀取 cache 的對應資料;如果沒有則往 database 讀取 ⇒ 往 cache 寫入
- **Write**:將資料寫入資料庫 ⇒ 在 cache 的該資料標示 invalid
2. Cache 展開
- **Read**:cache 收到 request ⇒ 回傳該資料;如果沒有,cache則向 database request ⇒ 將資料寫入cache ⇒ cache回傳資料給Application
- **Write**:寫入cache & database
- **Write**:寫入cache ⇒ cache 寫入 database
- 可能會遇到的問題
- 防止使用資料庫沒有的資料做查詢攻擊:查詢量大的話回傳 default (空值)到 cache
- 避免 cache 使用相同的 expire time,否則會在 expire time 後湧入很多 database 查詢
- 防止如果同時間湧入 request 造成 database 負擔 ⇒ 設定更新鎖:保證只有一個線程可以去更新緩存,其他線程則等待
---
### **什麼是 JWT**
JSON Web Token
- Client 向 Auth server 請求 ⇒ Auth server 回傳 token
⇒ Client invoke Api with Token
---
### **什麼是 TCP 與 UDP**
- 建立連線
- Client - (同步請求) → Server
- Client ← (同步+確認) - Server
- Client - (確認) → Server
(同步 = Syn; 確認 = Ack)
- 傳輸
- TCP協議通過分段(Segment)的方式將數據分成多個小塊進行傳輸
- 確認
- 接收方需要回傳一個確認訊息(ACK)給發送方,表示已經收到了這個分段;如果沒有則重傳
- 關閉連接
- Client - (FIN) → Server
- Client ← (ACK) - Server
- Client ← (FIN) - Server
- Client - (ACK) → Server
- 優點
- 可靠性、順序性、兼容性
UDP 比起 TCP 更快速,但是沒有保證傳送資料的可靠性
---
### 比較 SQL 和 NoSQL
| | SQL | NoSQL |
| --- | --- | --- |
| 數據模型 | 結構化表格 | 非結構化數據 |
| 數據查詢 | 使用 SQL 語言 | 使用專用的查詢語言或 API 進行查詢 |
| 扩展性 | 垂直扩展,需要增加更多的硬體資源 | 水平扩展,可以通過添加更多的節點來擴展 |
| 數據查詢 | 使用結構化查詢語言(SQL)進行查詢 | 使用專用的查詢語言或API進行查詢 |
| 數據存儲 | 數據存儲在表格中,每個表格有固定的欄位 | 數據存儲在文檔、鍵值對、圖形等格式中,每個文檔可以有不同的欄位 |
| 適用場景 | 適用於結構化數據,如交易記錄、訂單等 | 適用於非結構化數據,如日誌、社交媒體、傳感器數據等 |
---
### 什麼是 **ACID**
ACID 是指在資料庫的管理系統中,在寫入或更新資料的過程中,為了保證事務(transaction)是正確可靠的,所以須具備四種特性:
- 原子性(**A**tomicity):事務是不可分割的完整個體,只有「全部執行」或者「全部不執行」兩個選項。
- 一致性(**C**onsistency):這邊指的「一致」為資料庫的一致狀態,是指在事務開始的前後,資料庫的完整性沒有被破壞,表示寫入的資料必須完全符合所有預設的規範。
- 事務隔離(**I**solation):某事務執行期間所用的資料或中間結果,不容許其他交易讀取或寫入,直到被 Commit 為止。
- 持久性(**D**urability):一旦交易 Commit 後,其對資料庫做的**變更是永遠有效的**,即使未來系統當機或損毀。
---
### 什麼是 ORM
- 透過一些工具或套件向 SQL 資料庫來做溝通
- 解決 SQL 的缺點
1. 不易維護。
2. 不容易被重用,每個 SQL 語句都需要獨立編寫並維護。
3. 容易犯錯:容易犯錯,容易缺少引號、忘記加條件等。
4. 容易被攻擊:容易遭到 SQL Injection 攻擊。
5. 資料庫遷移問題:針對 MySQL 開發的 SQL 語句就沒辦法直接應用到 Oracle 上的資料庫。
**ORM 優點**
1. 簡化資料庫操作的程式碼
2. 提高可維護性,使得程式碼更容易維護。
3. 提高抽象性:ORM 把資料庫表格與物件之間的映射關係隱藏起來,使得開發人員不必直接與資料庫打交道。
4. 可以輕鬆移植程式碼,而不需要大量修改。
5. 提高安全性,防止 SQL 注入攻擊等方式
**ORM 缺點**
1. 效能較慢:比直接使用原生 SQL 語句慢一些。
2. 抽象性問題:開發人員可能不能完全了解資料庫的運作方式。
3. 版本問題:需要注意程式碼的兼容性。
---
### **什麼是 XSS 攻擊** (cross-site scripting)
- Stored XSS
- 將惡意腳本注入到網站的資料庫中,在其他用戶進入到需要該資料的網頁時發動攻擊
- Reflected XSS
- 將惡意腳本注入到網址中,在其他用戶進入該網頁時發動攻擊
- DOM-Based XSS
- 通過修改網頁中的DOM元素
---
### **什麼是 CSRF 攻擊 (跨站請求偽造)**
- 利用使用者的cookie身分對其他網站發送惡意請求,比如詐騙連結、轉帳等
- 防範方式
- 增加一些驗證,像是圖形驗證碼、簡訊驗證碼等。
- 不要用 **`GET`** 請求來做關鍵操作,建議用 **`POST`** 請求。
- CSRF token
---
### **什麼是OOP**
- **封裝(Encapsulation)**
- **繼承(Inheritance)**
- **多型(Polymorphism)**
- 不同的 args 對應不同的 function
---
### **重構(Refactoring)**
- **目的**
- 提高可讀性
- 提高可維護性:提高可讀性,使 code 更清晰易懂、更易於維護
- 減少冗餘:刪除無用的程式碼、合併重複的程式碼和重新組織程式碼,從而減少代碼冗餘。
- 提高性能:減少循環次數和使用更高效的數據結構等。
- 改善安全性:刪除容易被攻擊的程式碼
- **如何重構?**
- **Red-Green-Refactor** 是一種軟體開發流程,通常用TDD開發,此流程分成三個步驟:
- Red(紅色):寫一個失敗的測試,以驗證所需的功能不存在或不正確。
- Green(綠色):寫最少的程式碼來通過測試。
- Refactor(重構):再次檢查程式碼,以確保其結構正確、可維護和易於理解。
---
### **什麼是 MVC**
- Model :負責定義數據模型以及與資料庫溝通
- View:負責渲染用戶介面
- Controller :負責 Client 的互動邏輯,也是 Model 與 View 之間的橋樑
---
### **什麼是 SOLID 原則**
1. 單一職責原則(Single Responsibility Principle,SRP):一個類應該只有一個職責,即一個類只應該有一個修改的理由。這樣可以使類更加高內聚、低耦合,易於維護和擴展。
2. 開放封閉原則(Open-Closed Principle,OCP):軟件實體(類、模塊、函數等)應該對擴展開放,對修改封閉。這樣可以使軟件更加靈活,易於擴展和重用。
3. 里氏代換原則(Liskov Substitution Principle,LSP):子類應該能夠替換父類並且不會影響程序的正確性。這樣可以使代碼更加通用、可靠、易於測試和擴展。
4. 介面隔離原則(Interface Segregation Principle,ISP):不應該強迫客戶端依賴於它們不需要的方法和屬性。這樣可以使接口更加清晰、簡潔、易於理解和使用。
5. 依賴反轉原則(Dependency Inversion Principle,DIP):高層模塊不應該依賴於低層模塊,而是應該依賴於抽象層。這樣可以使代碼更加靈活、易於測試和重用。
---
# 常見題目
### **[後端工程師面試會問這些](https://hiskio.com/blog/technology-column/information-technology-study/engineer-interview/)**
1. 有用過什麼後端 Framework?
2. HTTP/ WebSocket/ Socket 是什麼?之間的差別為何?
3. 用過什麼資料庫(SQL 或 NoSQL)?
4. 比較 SQL v.s. NoSQL 優缺點
5. 用 ORM 的優缺點是什麼?
6. Hashtree 及 Hashmap 的差異
7. 不用很多記憶體情況下,資料庫裡一個單方向linked list 要怎麼樣找出重複節點?
8. TCP 該如何做流量控制
9. C thread 怎麼運作?
10. 3 handshake/ 4 handshake 是什麼?
11. 用過什麼雲端?有用過其中的哪些服務?
12. 試說明反向代理器
這邊也提供幾個後端作品集的主題提供給大家參考:
1. **Web API 設計與開發**
展示重點:
- Web API 基本設計與開發能力
- 熟悉程式語言的特性
- 框架的運用能力(以應徵 Node.js 開發者為例,你也要瞭解 Express.js 框架的基本運用)
2. **資料庫串連與設計**
展示重點:
- 資料庫串接能力
- **能夠設計相對複雜的資料庫結構**(**建議作品集要包含數個多對多的資料庫**)
- 正規化、ACID 等資料庫相關觀念
3. **串連 3rd-Party API**
展示重點:
- 與第三方系統串接合作的能力
- 看得懂第三方 API 文件
- 知名第三方 API 的使用經驗 (如果串接的是 Facebook API、LINE API 等知名 API,通常有額外加分)
4. **單元測試**
---
1. 為什麼離開現在的公司?
2. 為什麼想要加入 Carousell?
3. 想在旋轉扮演什麼樣的角色
4. 接下來三年有什麼目標
5. 除了工作有什麼休閒活動
6. 之前工作遇到最大的困難是什麼
7. 同事都怎麼說你?他們曾經因為什麼事情討厭你?
8. longest-palindromic-substring
9. coin problem
10. 3 handshake 是什麼?
11. 4 handshake 是什麼?
12. HTTP vs WebSocket vs Socket
13. 什麼是 HTTP2
14. PostgreSQL vs MySQL
15. 各種排序演算法的時間與空間複雜度
16. Google Protobuf 是什麼?
17. TCP 該如何做流量控制
18. 有用過 Elixir (ruby syntax-like for erlang structure) 嗎
19. C thread 怎麼運作?
20. 該如何 ping 某個 protocol 或是 port?
21. telnet 如果防火牆擋住了會怎麼樣?
22. 畫出及描述 web server
---
# What type of interviews might you expect
## **Introduction**
Getting a job involves jumping through several hoops. After compiling your resumé, identifying a few suitable job opportunities, filling in applications and researching companies, you will begin to receive interview offers. The aim of an interview is to find a good match between the company and the candidate. Every company is different, and every company will conduct the interview process in its own way.
In this reading, you will learn about what is involved in a coding interview, such as:
- What the screening process entails.
- The type of quiz questions you might encounter.
- What an online assignment might consist of.
- The details of a technical interview.
- And any take-home assignments that you might be asked to complete.
## **Screening**
The first contact you will have with a company will be a screening interview. A recruiter, having read your application, will usually arrange a phone call to discuss potential suitability. This stage aims to determine if you are genuinely interested in the role and whether you would be a good fit for the company. It is an excellent opportunity for you, as a candidate, to learn more about the role, the company and their hiring process. Some great questions to ask might include the following:
- What is the role?
- What coding language does the company typically use?
- What is the interview process, what types of interviews will be conducted, and how many will there be?
- What is the nature of the project the proposed role is for?
- What is the typical makeup of the team?
- Who will be on the interview panel, and what is their role in the company?
Remember that the interviewer wants to give you the opportunity to make a compelling case about why you should be hired. They should be more than willing to provide you with any information that might help you better prepare.
From the company perspective, the screening will typically look at your soft or interpersonal skills. There will be no technical questions, and a Human Resources (HR) representative will typically conduct it. Presenting yourself well and demonstrating your social abilities, like listening and question-answering, is essential.
## **Quiz**
A quiz is a very straightforward way of establishing if a candidate knows how to code. Typically, they are conducted early in the interview process and act as a filter to reduce the number of interviews a company must conduct. You should not expect deep or extended questions; instead, the purpose is to determine whether the candidate has a good grasp of the basics. Some questions could include the following:
- How do you test for nulls in an array in a language of your choice?
- What is the space complexity for Quicksort?
- Which data structure would you use to store a list of keys and values?
- What is a collision in hashing?
- What is the syntax to select a column name using SQL?
- What testing processes are you familiar with?
The questions will be job-specific, so the content may vary. However, they will be questions that should be answered with concise, direct responses. When preparing for an interview, it is prudent to identify which programming languages the company uses and any other technical insights that can be gleaned from the job posting and initial screening.
## **Online coding assignment**
You may be asked to complete an online coding assignment, depending on the job you apply for. This generally happens before a technical interview, as the results can be used as a point of discussion during subsequent interviews. However, the assignment could also occur after a successful technical interview to compare candidates.
This step allows you to approach and solve a clearly defined task in a non-pressurized environment. Similar in difficulty level to the quiz, it is a filtering step to ensure that you can work with the target technology and grasp the basics, like loops, Booleans, checks, and so on. Some coding assignments could be timed; in this situation, you would have access to Google and other reference material.
## **The technical interview**
This is also called the coding challenge. Typically, this will happen after the initial screening. It can either be virtual or in-person. The interviewer will present you with a challenging problem and give you a brief period to solve it. It is always best to discuss your thoughts aloud as you engage with the challenge. For example, before deciding between two data structures, explain why you feel one is more appropriate than the other for the task. Take the opportunity to demonstrate your general understanding of the topic and the task-specific expertise.
The difficulty level of the technical interview should be low. Interviewers know that you don't have access to Google and may have had to memorize some of the required syntax. Instead, these interviews are designed to demonstrate your problem-solving skills. Some technical interviews may be conducted using pseudocode. Additionally, technical interviews allow future colleagues to assess your ability to reason with code. They often include short, specialized prompts like:
- How would you explain technology X to a non-technical person?
- What is your favorite technology and why?
- What databases have you worked with?
- Tell me about a technical challenge you have overcome in a project.
- What projects have you worked on in your spare time?
These are generic prompts, and a technical interview will be tailored for a specific role. However, preparing a few answers describing your journey as a programmer is good practice. Review your projects and be clear on the various decisions you have made and why particularly when selecting one technology over another.
## **The take-home assignment**
If you get this far, you are doing very well. This may happen before or after the technical interview, as the interviewers may want to discuss your thought process around the solution you provided earlier in the process. If there are many rounds of interviews for the post, then it may happen between two technical interviews. A company should not ask you to do a take-home assignment unless they feel you are potentially a good fit.
You will be given several days to expand on a solution to the challenge. You could be asked to build an application or programmatically solve a traffic routing problem. Other tasks might be project specific, such as, if you are going to work with vision processing, you may be asked to demonstrate that you can automatically detect objects in a video feed.
## **Top tips**
Conduct your research before every interview and review each one on completion. Most companies are happy to provide feedback after your interview, so always ask for this and use the points made as a starting point to be better prepared for the following interview. Remember, practice makes perfect.
## **Conclusion**
In this reading, you learned about what is involved in a coding interview, such as what the screening process entails, the type of quiz questions you might encounter, what an online assignment might consist of, the details of a technical interview, and any take-home assignments that you might be asked to complete.
Several types of interviews have been explained. However, the company you are applying to will have its preferred format, which could take one or more of these approaches. The most important takeaway is that “every interview is a learning process.” Suppose you missed a question or were queried on a technical concept you aren't familiar with. In that case, the opportunity is there for you to learn more about it post-interview.
# 面試中可能遇到的類型
## **簡介**
找工作需要跨越一些障礙。編寫簡歷、確定適合的工作機會、填寫申請,以及研究公司後,你將開始收到面試邀請。面試的目的是找到公司和候選人之間的良好匹配。每家公司都不同,每家公司都會以自己的方式進行面試過程。
在本文中,您將學習有關編碼面試的內容,例如:
- 篩選過程包括什麼。
- 您可能遇到的測驗問題類型。
- 在線作業可能包括什麼。
- 技術面試的細節。
- 可能要求您完成的任務。
## **篩選**
公司的第一次聯繫將是篩選面試。招聘人員閱讀了您的申請後,通常會安排一次電話通話,以討論潛在的適合性。此階段旨在確定您是否真正對該角色感興趣,以及您是否適合該公司。這是一個絕佳的機會,讓您作為候選人更多地了解該角色、該公司和他們的招聘過程。一些很棒的問題可能包括以下內容:
- 這個角色是什麼?
- 公司通常使用哪種編程語言?
- 面試過程是什麼,會進行哪些類型的面試,有多少次?
- 所提議的角色的項目性質是什麼?
- 團隊的典型構成是什麼?
- 誰將在面試小組中,他們在公司中的角色是什麼?
請記住,面試官希望給您機會,讓您有機會證明為什麼您應該被聘用。他們應該非常樂意為您提供任何可能幫助您更好地準備的信息。
從公司的角度來看,篩選通常會關注您的軟技能或人際交往能力。不會有技術問題,通常由人力資源(HR)代表進行。良好的表現和展示您的社交能力,如聆聽和回答問題,至關重要。
## **測驗**
測驗是確定候選人是否懂得如何編程的非常簡單的方法。通常,它們在面試過程的早期進行,作為減少公司必須進行的面試次數的過濾器。您不應該期望深入或延伸的問題;相反,目的是確定候選人是否對基礎知識有很好的掌握。一些問題可能包括以下內容:
- 如何在您選擇的語言中測試空值?
- 快速排序的空間複雜度是什麼?
- 您會使用哪種數據結構來存儲鍵和值列表?
- 雜湊中的碰撞是什麼?
- 使用SQL選擇列名的語法是什麼?
- 您熟悉哪些測試流程?
問題將是特定於工作的,因此內容可能會有所不同。但是,它們將是應試者應用簡潔、直接回答的問題。當準備面試時,明智的做法是確定公司使用哪些編程語言以及從工作發布和初始篩選中可以獲得的其他技術見解。
## **在線編碼作業**
根據您申請的工作,您可能會被要求完成在線編碼作業。這通常發生在技術面試之前,因為結果可以用作隨後面試中的討論點。但是,該任務也可能發生在成功的技術面試之後,以比較候選人。
此步驟允許您在非壓力的環境中解決明確定義的任務。難度水平與測驗相似,它是一個過濾步驟,以確保您可以使用目標技術並掌握基礎知識,例如循環、布林值檢查等。一些編碼任務可能是定時的;在這種情況下,您將可以訪問Google和其他參考資料。
## **技術面試**
這也被稱為編碼挑戰。通常,這將在初始篩選之後發生。它可以是虛擬的或面對面的。面試官將向您展示一個具有挑戰性的問題,並給您一個簡短的時間來解決它。最好在與挑戰互動時大聲地討論您的想法。例如,在決定兩種數據結構之間時,解釋為什麼您認為一種比另一種更適合該任務。利用機會展示您對該主題和特定任務的理解能力。
技術面試的難度應該很低。面試官知道您無法訪問Google,而且可能必須記憶所需的某些語法。相反,這些面試旨在展示您的問題解決能力。有些技術面試可能會使用偽代碼進行。此外,技術面試允許未來的同事評估您編碼推理的能力。它們經常包括短的、專門的提示,例如:
- 您如何向非技術人員解釋技術X?
- 您最喜歡的技術是什麼?為什麼?
- 您使用過哪些數據庫?
- 告訴我有關您在項目中克服的技術挑戰的情況。
- 您在業餘時間都做過哪些項目?
這些是通用提示,技術面試將針對特定角色進行調整。但是,準備幾個描述您作為程序員的旅程的答案是好的練習。回顧您的項目,明確各種決策的原因,特別是在選擇一種技術而不是另一種技術時。
## **帶回家的任務**
如果您到達這一步,那麼您做得非常好。根據職位而定,這可能會在技術面試之前或之後發生,因為面試官可能希望討論您在流程早期提供的解決方案的思維過程。如果該職位有許多面試輪次,則可能會在兩個技術面試之間發生。除非公司認為您有潛在的優勢,否則不應要求您完成帶回家的作業。
您將有幾天的時間來擴展對挑戰的解決方案。您可能會被要求構建應用程序或以編程方式解決交通路由問題。其他任務可能是項目特定的,例如,如果您要使用視覺處理工作,可能會要求您展示您可以自動檢測視頻鏈路中的對象。
## **頂部提示**
在每次面試之前進行研究,並在完成每次面試後進行回顧。大多數公司很樂意在您的面試後提供反饋,因此請總是要求此反饋,並使用所做的點作為更好準備以下面試的起點。記住,練習使人完美。
## **結論**
在本文中,您學到了編碼面試的內容,例如篩選過程包括什麼、您可能遇到的測驗問題類型、在線作業可能包括什麼、技術面試的細節以及可能要求您完成的任務。
已解釋了幾種面試類型。但是,您申請的公司將具有其首選格式,可能會採用這些方法中的一種或多種。最重要的結論是“每次面試都是一個學習過程”。如果您錯過了一個問題或被詢問了一個您不熟悉的技術概念,那麼您有機會在面試後了解更多相關信息。
---
The success of an interview is almost fully dependent on how you communicate with the interviewers. You wish to convey your suitability and the company would like to find a candidate that is appropriate for the role. In this video, you will learn about verbal and physical or non verbal communication. Never underestimate the power of first impressions. It is important that every interaction with you as a potential employee reflects the capabilities that you will bring to the organization. The first non verbal sign that you can show is punctuality. It is good practice to arrive at least ten minutes before the scheduled meeting is supposed to start, particularly if you are unsure of the specific venue where the interview will be conducted. It takes time to navigate a building and you wish to appear composed and ready for the interview, not out of breath and flustered. Over the course of the interview, ensure that you maintain eye contact and actively listen to the questions that are being asked. Dress appropriately for the meeting. Generally, a job interview calls for you to wear professional or business attire. Make sure your clothes are clean and neat, that shows respect and reflects positively on yourself. Finally, maintain a good posture and refrain from squirming and needlessly touching the face or wringing the hands. While being nervous about and during a meeting is understandable, these gestures may unintentionally convey a sense that you don't feel up for the task. A great way to settle the nerves is to have done your due diligence prior to the meeting. Make sure you understand what the job entails and what the company does and stands for. Although it is important to understand the importance of nonverbal communication, verbal communication is equally important. You need to be able to speak to your interviewers. A good indicator of how to conduct yourself in an interview is to observe the interviewers listen carefully. They will lead with questions to see if you fit the required skills and personality profile. Typically, an interviewer will aim for the 80 20 rule, speaking for 20% of the time and allowing you to present yourself for the other 80%. So, allow the interviewer to direct the question to you completely before answering. Use clear and concise language in your answers. The temptation, particularly if you have done diligent preparation is to try and respond to a question with everything you know on the topic. This may lead to some rambling. A better answer is one that stays on topic and allows for the opportunity for further questions. A good interviewer will follow up with related questions so this allows for the conversation to flow. Refrain from exaggerating your abilities or being negative towards yourself. Be careful not to use emotive terms that can convey negative attitudes about yourself. For example, rather than saying, I failed at that task, you could say that task was challenging but provided me with some ideas for future areas of research to explore. Additionally, avoid excessive slang cursing or inappropriate humor. A good methodology to follow when conducting an interview is the star method. Initially the interviewer will attempt to make you feel welcome by giving you an opportunity to talk about yourself, what is on your CV? What do you know about the company or the role? As the interview progresses, the discussion will focus more on your abilities and suitability for the role. It is important that you can convey why you are a good fit. Typically, questions will focus on the business needs, either technologies that are being used or problems that have had to be overcome.
The interviewer wants to know how you would respond to issues that arise when engaged with the job. Therefore try to answer questions using the STAR method. Include the following four points when answering a question. The situation, the task, the action and lastly the result. Here are some examples to demonstrate the method more clearly. What is the context of the situation? What is the project and what are the challenges faced? Looking at the task, what would your responsibilities and assignments be? What actions will you take to rectify or address the challenges? What are the results or outcomes of your actions? How did taking this approach impact the result? Using this approach as a template for an answer will give depth to your responses. It provides a workable framework for an answer. It also gives the interviewer a chance to respond with more related questions on areas you feel comfortable discussing. Let's recap what you have learned in this video. An interviewer will be on the lookout for candidates that can clearly convey a concept. Your first task is to communicate why you are suitable for the role. This is done verbally and non-verbally. Finally, the STAR method is a very efficient framework for engaging with technical questions that will arise over the course of an interview. In this video, you have learned that verbal and non-verbal communication is key during an interview. In any given role in a company, you may have to deal with the stakeholders, whether it be complications with the role or why a given solution is the optimal path to take. So, take what you have learned about communication and apply the principles with confidence.
成功的面試幾乎完全取決於您與面試官的交流方式。您希望傳達您的適合性,公司希望找到適合該職位的候選人。在本視頻中,您將學習口語和身體或非語言溝通。切勿低估第一印象的力量。每次與您作為潛在員工的互動都反映出您將為組織帶來的能力。您可以展示的第一個非語言標志是守時。最好提前至少十分鐘到達計劃開始的地點,特別是如果您不確定面試將在哪個特定場所進行。導航建築需要時間,您希望出現冷靜,準備好面試,而不是氣喘吁吁和慌亂。在面試過程中,請確保保持眼神接觸,並積極聆聽所提出的問題。穿著適當參加會議。通常,工作面試要求您穿著專業或商業服裝。確保您的衣服乾淨整潔,這顯示出對自己的尊重並反映出積極的形象。最後,保持良好的姿勢,避免扭動和不必要地觸摸臉部或揉手。雖然對會議感到緊張是可以理解的,但這些手勢可能會無意中傳達一種感覺,即您不感覺適合這項任務。緩解緊張的好方法是在會議之前完成了您的盡職調查。確保您了解工作的內容以及公司的業務和立場。雖然了解非語言溝通的重要性很重要,但口語溝通同樣重要。您需要能夠與面試官交談。一個良好的指標是觀察面試官仔細傾聽。他們將以問題為首,以查看您是否符合所需的技能和個性檔案。通常,面試官會遵循80 20法則,占用20%的時間,讓您佔用其餘80%的時間。因此,在回答問題之前,讓面試官完全指向您。在回答中使用清晰而簡潔的語言。誘惑,特別是如果您做了認真的準備,是試圖通過對主題的了解來回答問題的一切。這可能會導致一些混亂。更好的答案是專注於主題,並為進一步的問題提供機會。好的面試官會跟進相關問題,因此這允許對話流動。避免誇大自己的能力或對自己持否定態度。請勿使用表達負面態度的情感詞語。例如,與其說“我沒有完成那項任務”,您可以說那項任務具有挑戰性,但為您提供了一些未來要探索研究
---
Almost half of software developers according to data from a popular employment website find the coding interview portion, the most stressful portion out of all the technical interview. You are going to be asked a lot of technical problems, a lot of architectural problems, organizational problems, they really want to know who you are as a person and what you value. When I was interviewing, one way that I practice was I had an actual stuffed animal that I would talk to, and this just really forced me to practice the interview end to end as if I was actually talking out loud. I think the interviewers at Meta have been trained very well to make the interview, feel welcome and comfortable in solving problems together. [MUSIC] My name is Mari Batilando, I am a software engineer at Meta, and I work in the FB Web3 monetization team where I help creators and influencers make a living by using the Facebook product. My name is Moxxy Herrera, I use they, them pronouns, I'm a Software Engineer in the social impact work at Meta, and I work at the Menlo Park office. Hi, I'm Julie I'm a Software Engineer on the IG shopping team at Meta, New York. My name is Chanel Johnson. I work remotely in Maryland for Meta, and I'm a Software Engineer for the Facebook app core architecture team where we work on infrastructure for the Facebook mobile app.
There are generally three different types of interviews. Technical, which is your regular, elite code interviews, architecture interviews, and then behavioral. The technical interviews, the lead code ask questions. You'll typically have two to four of these in the interview process, one or two will be as a screen, and then there'll be a couple more after you pass the initial screen, and these are just going to be 20 or 30 minutes per question, just your classically code questions. The architecture interview is going to be about 45 minutes to an hour long interview, where you'll get a question of how to build kind of an end to end feature. So this can either be more product-oriented like build tetris, or it can be more backend oriented, kind of focused on how data flows and how to scale this to many users. And then finally, for the behavioral interviews, you can expect questions like about your experience, working with other people, collaborating, challenges you faced, exciting projects that you've worked on.
Questions I usually ask is what is an experience that you had when working on a team that things did not go well. And the main reason I ask for this is because at Meta, you're going to have to be working with a lot of people, it's not just a solitary job. So you need to learn how to communicate and how to really learn and grow with people. When I was interviewing, I was asked a lot of general questions that I would expect an IOS engineer. So for example, how would I build the Newsfeed surface in the Facebook app, what objects will I make, how will those objects talk to each other? What networking APIs do I expect? And being able to, at a high level, describe how I would tackle these challenges and how I would structure the app as an IOS engineer, so that's a very classic question.
What advice do we give in order to practice for interview questions is to talk about your solution when you're white boarding it. So one thing I would do is like with friends or colleagues, when you write out your solution, explain your thought process on what's going on. Are you considering time complexity? Are you considering how to make this faster? How to reduce space? These are things that we also want to see as interviewers, because when you're coding on the job, these are things you need to think about. So this is a good practice for you to explain when you go through your code of like, hey this is why I'm doing this because of x, y and z, I'm also considering this. As an interviewer, I am actually rooting for you to do well because what I want as an interviewer is to not sit there and stare at the screen for 45 minutes watching you struggle. I would much rather see you succeed and for us to work together on a problem, so that I can gather as much signal from you as I can so that I can make a good decision whether or not you would be a fit for Meta.
In terms of dress for the interview, the key is to really just be yourself, wear something that you're comfortable with. No one expects you to show up in a suit. I get a lot of interviewees that are wearing just a T-shirt and jeans. I am really looking for a candidate that is willing to explain their thinking, willing to engage very deeply, and show a high level of confidence and knowledge.
So the most common mistake I see people making is they might be a really talented IOS engineer, but their software general skills might be lacking. So make sure you're preparing for those general algorithms and data structure types of questions because they will come up when you are interviewing regardless of the pipeline that you're interviewing for. Sometimes in a technical challenge, you'll get stuck. And the worst thing you can do is say nothing, because I can't read your mind and I don't know what you're doing. So you really want to explain what you're thinking for, how you're stuck, why you're stuck, because even if you don't get the answer right, if you can show that you have a good understanding of the problem, that can be enough to get you to the next round.
What really impresses me about candidates is when they come prepared for the interview, and you should obviously come prepared to the interview, but when they've done their research on the company, they know the values and they know how they apply to their values and what they can bring to Meta. What really impresses me about a candidate during an interview is when they can take feedback from me. So even if they are on the right track already, sometimes if I can see that and push them a little bit more, that's a really good sign that they can hear my feedback and work with me to solve whatever problem is at hand. It gives a good indication that it's someone that I would want to work with in real life. Interviewing is really about showing who you are, it's really about showing what you know, how you grow, how you learn, and there's not a single trick to it, you really have to kind of figure out a little bit about yourself and how you display these things and make it work for you. A candidate that's very enthusiastic, excited to be there and has a really positive demeanor, that just really shows that that's someone I want to work with, someone that's going to be passionate about the work they do and that is what I think leads to success is that passion. On the other side of the interviews, even though it can be a really long process, it is really rewarding to start to actually work on the products that people use every day at a place like Meta where things scale so large. It's really cool to see one of the features you build being used by millions of users. And you get to work with the smartest people I've ever met in my life, and that will help you grow as an engineer, and you would be shocked at how much you will learn and grow within a short time here. >> Thanks for watching. Hope that you were able to learn some good tips at interviewing at Meta, and good luck on the rest of your journey.
######################
In this reading, you will learn how to prepare for an interview and get some essential tips about presenting yourself in person and at virtual interviews.
Before successfully starting a job at a company, you must demonstrate that you are a suitable candidate for the role. Getting a job can be challenging and may require attending several interviews before finding a position suited to your skill set. Ideally, you are looking for one where you are the strongest candidate for the role. It is essential to realize that even if you are well-suited to a position, there is always the possibility that a more experienced candidate is also being interviewed. So, even though you did not get a role, you could still have had a good interview.
It may help to think about interviews as a stepping stone on your journey to a rewarding full-time career. Regardless of the outcome, always ask yourself, did I present myself to the best of my ability? And, can I learn things from this interview that can help me in subsequent interviews?
## **Prepare**
Here are some of the standard questions that you may encounter in any given interview:
- Tell me about yourself.
- Why do you feel that they should hire you?
- What are your major strengths?
- Or, what are your major weaknesses?
- What pay are you expecting?
- How do your previous experiences make you suitable for this role?
- What do your friends say about you?
- Why do you want this role?
- How have you dealt with conflict in the past?
Knowing these questions are coming is advantageous because you can prepare for them. After reading this list, can you write a concise answer for each? You will find the answers to many of these questions in your resumé. A good tactic is to review your resumé before an interview to see which aspects are related to the company and role.
Additional answers worth preparing for may relate to the company itself. Where is the company based, and what do they do? How does your previous employment overlap with their current needs? Research the same role in other companies. Know the market salary for the position if you are asked about a pay rate. The interviewer will know the answer, so being able to answer this successfully demonstrates your preparedness. Learning about a company displays an eagerness to work there. Finally, consider that a weakness may also be a strength. "I focus excessively on details" can be damaging if there are tight deadlines; however, it is a strength if the job requires meticulous attention to detail.
## **Soft skills**
Conflict resolution is an essential soft skill to possess. Invariably in your working life, you will encounter a situation where your approach or goals do not align with those of a colleague, employer, or customer. Managing these situations helps create a harmonious working environment. Be cognizant of when you have clashed with people and how you resolved it. Did you find this approach to be successful? If not, then do some research on how to deal with conflict in the workplace.
## **Presentation**
It's frequently said, "dress for the job you want, not the job you have." How you present yourself can subconsciously convey much information about you. Be neat and respectable. Your future work colleagues may be on the panel, and you want to make a good impression. The attire you wear should be suitable for the role. Pride in appearance can be equated with pride in a role.
## **Demeanor**
Display readiness for the role. Colleagues will want to see someone interested in being there. Be calm and relaxed when answering questions. It is never a good policy to interrupt a question. Listen until the question is finished, and take a breath. Competency questions require a STAR answer (Situation, Task, Action, Result). Display pride in previous work-related experiences you've had. And have some questions prepared. In an interview, the interviewer should always allow you to ask them a question. Take this time to learn something about what is being sought. What conditions might be more favorable for you? Are the company's goals aligned with yours, and can you convey that?
Be authentic in your actions. It is better to be truthful and honest when applying for a post. Exaggeration may lead to a follow-up interview, but it is better to be capable of any position you intend to work in.
## **Virtual interviews**
Many interviews are conducted virtually. Virtual interviews are challenging as it can be more difficult to read body language over video. Due to sound quality, it is essential to refrain from speaking over someone. Ensure that all your tech is working. Have your computer plugged in and a working set of earphones in case of sound issues. Ensure that your video is working and compatible with the platform. Sometimes, a computer needs to change permissions before you can use a camera. And remember to test the connection speed.
As with an in-person interview, appearance is essential. Take some time to make sure you are suitably attired. Even though you have not gone into the office, dress as though you have. As with an in-person interview, be aware of your body language. Sit up straight and be attentive. Though you may be in your home, it is still essential to conduct yourself with work decorum.
Find a quiet location that is free from distraction. It can be helpful to have a dedicated space to work in. This is necessary to ensure that during the interview, there will be no surprise guests doing housework in the background.
## **Conclusion**
In this reading, you learned how to prepare for an interview and got some essential tips on presentation and how to conduct yourself in virtual interviews. Despite your best efforts, you may not be successful if there is a more suitable candidate. You may also find that the role isn't as aligned with your skillset as you first thought. It is good to remember that regardless of the outcome, an interview is a learning experience. If treated as such, it is a stepping stone to a career that aligns with your goals and abilities. Being prepared and ready to pounce when the opportunity arises is the key to success.
# 面試中可能遇到的類型
## **簡介**
找工作需要跨越一些障礙。編寫簡歷、確定適合的工作機會、填寫申請,以及研究公司後,你將開始收到面試邀請。面試的目的是找到公司和候選人之間的良好匹配。每家公司都不同,每家公司都會以自己的方式進行面試過程。
在本文中,您將學習有關編碼面試的內容,例如:
- 篩選過程包括什麼。
- 您可能遇到的測驗問題類型。
- 在線作業可能包括什麼。
- 技術面試的細節。
- 可能要求您完成的任務。
## **篩選**
您與公司的第一次聯繫將是篩選面試。一名招聘人員讀過您的申請後,通常會安排一次電話聯繫,以討論潛在的適合性。此階段旨在確定您是否真正對角色感興趣,以及您是否適合公司。作為候選人,這是一個很好的機會,讓您了解更多關於角色、公司和他們的招聘流程的信息。一些很好的問題可能包括以下內容:
- 這是什麼角色?
- 公司通常使用哪種編程語言?
- 面試過程是什麼,會進行哪種類型的面試,共有多少次面試?
- 建議角色的項目的性質是什麼?
- 團隊的典型組成是什麼?
- 面試小組中會有誰,他們在公司中的角色是什麼?
請記住,面試官希望給您機會,讓您有機會闡述為什麼您應該被聘用。他們應該非常樂意為您提供任何可能幫助您更好地準備的信息。
從公司的角度來看,篩選通常會查看您的軟技能或人際技能。不會有技術問題,通常由人力資源(HR)代表進行。展現自己很好,並展示您的社交能力,如聆聽和問答,是至關重要的。
## **測驗**
測驗是確定候選人是否知道如何編碼的一種非常簡單的方法。通常,它們在面試過程的早期進行,並作為篩選器減少公司必須進行的面試次數。您不應該期望深入或延伸的問題;相反,目的是確定候選人是否對基礎知識有很好的掌握。一些問題可能包括以下內容:
- 如何在所選語言中測試數組中的空值?
- Quicksort的空間複雜度是什麼?
- 哪種數據結構會用於存儲鍵和值
## **技術面試**
技術面試將更加深入,主要考察您的技能和知識。在技術面試中,您可能需要回答一些關於語言、編碼和理論方面的問題。技術面試的類型通常有三種:
1. 技術面試:這種面試是您的常規面試,主要是關於您的編碼技能和能力的問題。您通常會有兩到四次這種面試,其中一到兩次是篩選面試,然後在通過初步篩選之後,會有幾次更深入的面試。每次面試大約需要20到30分鐘,主要是編碼問題。
2. 架構面試:這種面試通常持續45分鐘到1小時,您將面對一個問題:如何構建一個端到端的功能。這可以是更加產品導向的,例如構建俄羅斯方塊,也可以是更加後端導向的,例如專注於數據流和如何將其擴展到多個用戶。
3. 行為面試:這種面試通常會問一些關於您的經驗、與他人合作、遇到的挑戰以及您工作中的興奮項目等問題。
## **建議**
以下是一些幫助您準備面試的建議:
- 準備答案:回答可能問到的問題,並練習您的回答。可以通過與朋友、同事或家人練習來幫助您。
- 認真研究公司:了解該公司的價值觀和文化,以及他們的產品和服務。
- 練習白板編程:在白板上實際編寫代碼,並將思維過程和解決方案講述給其他人聽。
- 穿著舒適:不需要穿正式西裝,穿著舒適、得體的服裝即可。
- 表現自信:展示您的知識和技能,並展現您的自信。
- 接受反饋:聆聽面試官的反饋,並展示您可以接受並應對反饋的能力。
- 熟悉面試過程:了解可能的問題類型和面試過程,以便更好地準備。
- 展示熱情:展現您對工作的熱情和積極性,並展現您對公司和產品的興趣。
希望您現在對面試準備有了更好的了解。祝您好運!