資深工程師 問題集
基本知識
進階程式技巧
- 1. 單一職責原則 (Single Responsibility Principle, SRP)
public class Report { public string Text { get; set; } public void GenerateReport() { // 生成報告的邏輯 } public void SaveToFile(string filePath) { // 將報告保存到檔案的邏輯 } }public class Report { public string Text { get; set; } public void GenerateReport() { // 生成報告的邏輯 } } public class ReportSaver { public void SaveToFile(Report report, string filePath) { // 將報告保存到檔案的邏輯 } }2. 開放封閉原則 (Open/Closed Principle, OCP)public class Rectangle { public double Width { get; set; } public double Height { get; set; } } public class Circle { public double Radius { get; set; } } public class AreaCalculator { public double CalculateRectangleArea(Rectangle rectangle) { return rectangle.Width * rectangle.Height; } public double CalculateCircleArea(Circle circle) { return Math.PI * circle.Radius * circle.Radius; } }public abstract class Shape { public abstract double CalculateArea(); } public class Rectangle : Shape { public double Width { get; set; } public double Height { get; set; } public override double CalculateArea() { return Width * Height; } } public class Circle : Shape { public double Radius { get; set; } public override double CalculateArea() { return Math.PI * Radius * Radius; } } public class AreaCalculator { public double CalculateArea(Shape shape) { return shape.CalculateArea(); } }3. 里氏替換原則 (Liskov Substitution Principle, LSP)public class Rectangle { public virtual double Width { get; set; } public virtual double Height { get; set; } public double GetArea() { return Width * Height; } } public class Square : Rectangle { public override double Width { set { base.Width = base.Height = value; } } public override double Height { set { base.Width = base.Height = value; } } }public abstract class Shape { public abstract double GetArea(); } public class Rectangle : Shape { public double Width { get; set; } public double Height { get; set; } public override double GetArea() { return Width * Height; } } public class Square : Shape { public double SideLength { get; set; } public override double GetArea() { return SideLength * SideLength; } }4. 接口隔離原則 (Interface Segregation Principle, ISP)public interface IWorker { void Work(); void Eat(); }public class Robot : IWorker { public void Work() { // 機器人工作 } public void Eat() { // 機器人不需要吃飯 throw new NotImplementedException(); } }public interface IWorker { void Work(); } public interface IEater { void Eat(); } public class Human : IWorker, IEater { public void Work() { // 人類工作 } public void Eat() { // 人類吃飯 } } public class Robot : IWorker { public void Work() { // 機器人工作 } }5. 依賴倒置原則 (Dependency Inversion Principle, DIP)public class Light { public void TurnOn() { // 開燈 } public void TurnOff() { // 關燈 } } public class Switch { private Light _light; public Switch(Light light) { _light = light; } public void Operate(bool on) { if (on) { _light.TurnOn(); } else { _light.TurnOff(); } } }public interface IDevice { void TurnOn(); void TurnOff(); } public class Light : IDevice { public void TurnOn() { // 開燈 } public void TurnOff() { // 關燈 } } public class Switch { private IDevice _device; public Switch(IDevice device) { _device = device; } public void Operate(bool on) { if (on) { _device.TurnOn(); } else { _device.TurnOff(); } } }
資料庫和 ORM
Web 開發
性能和優化
Thread 與 async/wait 的 差別?
Thread(線程)
async/await
匯總對比
特點
Thread
async/await
雲端和 DevOps
問題解決和設計模式
ASP.Net MVC 的 Request 與 Response 的 生命週期原則
1. Application Start
2. Routing
3. MVC Handler Creation
4. Controller Initialization
5. Action Execution
6. Result Execution
7. Response
簡化的ASP.NET MVC Request/Response生命週期流程圖:
設計一個WebAPI專案,你會考量哪些因素哪些設計
1. 需求分析
2. 架構設計
3. API設計
4. 資料庫設計
5. 安全性
6. 性能優化
7. 日誌和監控
8. 測試
9. 文檔和版本控制
10. 部署和維護
說明擴充方法的使用方式與境情
使用擴充方法的步驟
範例與說明
步驟 1: 定義靜態類和擴充方法
步驟 2: 引用擴充方法命名空間並使用擴充方法
使用擴充方法的情境
其他考量
寫一個方法,下列陣列,找出值等於8的索引, [1,3,5,7,8,10,11,16,18,20]
方法實現
說明
執行結果
資庫庫中的 Delete 與 Truncate 的差別
1. 操作粒度
2. 性能
3. 事務與回滾
4. 觸發器
5. 自增列
總結
使用範例
請說明,Nested loop join , merge join 和 hash join的原理和效率
1. Nested Loop Join
原理
效率
2. Merge Join
原理
效率
3. Hash Join
原理
效率
總結
請解釋一下什麼是AJX以及它在網頁開發中的作用
AJAX 的主要作用包括:
AJAX 的基本工作流程:
AJAX 的常見使用場景:
Last updated