# 新騎資訊面試題目 [toc] ## Q1:簡單 JOIN ### 資料表格式說明 - 會員資料表 [Member]: - Id:`PRIMARY KEY` - Account:會員帳號 - 會員詳細資料資料表 [MemberDetail]: - Id:`PRIMARY KEY` - MemberId:`[Member]` 的 Id - Name:真實姓名 - PhoneNumber:電話號碼 ### 資料表內容: `[Member]` | Id | Account | | ---- | ---- | | 1 | jack1234 | | 2 | mark5678 | | 3 | tom5566 | `[MemberDetail]` | Id | MemberId | Name | PhoneNumber | | ---- | ---- | ---- | ---- | | 1 | 1 | Jack | 0912345678 | | 2 | 3 | Tom | 0987654321 | ### 問題: 請寫一段語法,查詢出會員帳號與詳細資訊 需顯示的欄位為: select member.Account, MemberDetail.Name, MemberDetail.PhoneNumber from Member inner join MemberDetail on Member.Id=MemberDetail.MemberId | Account | Name | PhoneNumber | | ---- | ---- | ---- | ## Q2:List 資料更新 ### 問題 請處理以下程式中的 `DeleteMembers`: 將傳入 `DeleteMembers` 中的 `members` 做軟刪除 `※ 註:軟刪除就是將 IsDelete 變為 true` 並將已刪除的 member id 轉為 List 回傳 ```csharp= class Program { static void Main(string[] args) { var members = new List<Member>() { new Member(1, "Jack"), new Member(2, "Mark"), new Member(3, "Tom"), }; var result = DeleteMembers(members); Console.ReadLine(); } /// <summary> /// 刪除會員 /// </summary> /// <param name="members"></param> /// <returns></returns> public static List<int> DeleteMembers(List<Member> members) { List<int> resultIds; // ******** 作答區 ******** // 1. 軟刪除:將 IsDelete 變為 true Member.IsDelete = true // 2. 將已經刪除的會員 id 回傳出來 resultIds = members // *********************** return resultIds; } /// <summary> /// 會員 /// </summary> /// <returns></returns> public class Member { public Member(int id, string name) { Id = id; Name = name; IsDelete = false; } /// <summary> /// 會員 Id /// </summary> public int Id { get; set; } /// <summary> /// 會員名稱 /// </summary> public string Name { get; set; } /// <summary> /// 是否已刪除 /// </summary> public bool IsDelete { get; set; } } } ``` ## Q3. 請回答以下 Console.WriteLine 分別會顯示什麼? ``` C# namespace Util.Test { class Program { static void Main(string[] args) { var Tbank = new TaiwanBankAccount(); var LineBank = new LineBankAccount(); Console.WriteLine($"1.{Tbank.WithdrawMoney()}"); Console.WriteLine($"2.{Tbank.BankCode}"); Console.WriteLine($"3.{LineBank.BankCode}"); Console.WriteLine($"4.{LineBank.GetMoney(1)}"); Console.WriteLine($"5.{LineBank.GetMoney(1, 2)}"); Console.WriteLine($"6.{LineBank.LimitAccount}"); Console.ReadLine(); } } public class BankAccount { private int LimitAccount = 13; public virtual string BankCode => "001"; public virtual string WithdrawMoney() { return ""; } } public class TaiwanBankAccount : BankAccount { public override string WithdrawMoney() { return "Web"; } public override string BankCode => "002"; } public class LineBankAccount : BankAccount { public override string WithdrawMoney() { return "Bank"; } public int GetMoney(int amount) { return amount * 2; } public int GetMoney(int amount, int amount2) { return amount * amount2; } } } ``` Web 002 001 2 2 13 ## 回答方式 請另開一份 hackmd 記錄下題目以及答案 提供給 HR hackmd 的連結以供審查