Interview notes: Senior fullstack base DotNet (Ver 25/02/2022)

Đây là loạt câu hỏi mà mình mới trải qua trong đợt phỏng vấn định kỳ vừa rồi.


1- Những khó khăn mình đã gặp phải khi làm dự án trước đó có kỹ thuật nào gây khó khăn cho mình không? nếu có gặp các khó khăn đó mình giải quyết những khó khăn đó như thế nào?

2- Trong các dự án đã từng làm, mình thấy hứng thú với project nào, học hỏi được gì từ project đó?

3- Chia sẻ chi tiết hơn một dự án em thấy thích thú nhất

4- Tính chất của OOP là gì và cho ví dụ cụ thể?

5- Trong C#, có sự khác biệt gì giữa interface với abstract? Khi nào nên dùng interface? Khi nào nên dùng abstract? Overload với override khác nhau ở chổ nào?

https://note4interview.blogspot.com/2022/03/notes-trong-c-co-su-khac-biet-gi-giua.html

5.1- Khi nào nên dùng virtual method, khi nào nên dùng abstract method?

5.2- Trong C#, giữa struct với class có gì khác gì không?

5.3- Trong C#, có biết về interface IDisposible không?

5.4- Có biết về keywork lock trong C# không? Khi nào thì cần dùng lock?

5.5- Hãy giải thích code example dưới nay sẽ hiển thị kết quả gì ra console và tại sao?

class Program {
   private static string result;
   static void Main() {
      SaySomething();
      Console.WriteLine(result);
   }
   static async Task<string> SaySomething() {
      await Task.Delay(5);
      result = "Hello world!";
      return “Something”;
   }
}

5.6- Có biết về StringBuilder không? Khi cộng chuỗi có nên dùng StringBuilder không? Tại sao?

6- Có biết về các design pattern không? Đã từng dùng qua cái design pattern nào rồi? Cho ví dụ một vài cái pattern đã dùng? Có nghe qua về Inversion of Control và Dependency Injection không? Hai cái đó có gì khác nhau không? Cho ví dụ? Có mối liên hệ gì giữa Unit Test với 2 pattern trên không? Cho ví dụ cụ thể?

https://note4interview.blogspot.com/2022/03/notes-co-biet-ve-cac-design-pattern.html

6.1- Có biết về SOLID principles không? Giải thích và cho ví dụ 5 prinicple trong đó.

6.2- Có nghe qua về Mediator pattern? Khi nào thì nên dùng pattern đó?

7- Có viết qua unit test chưa? Viết unit test bên frontend hay backend? Khi viết unit test có dùng dependency Injection không? Cho ví dụ về unit test sử dụng dependency injection? Khi làm unit test có biết cách dùng stub data và mock data không?

8- Database thì dùng MSSQL hay Oracle nhiều? Trong Database, có tạo qua Index chưa? Tại sao cần dùng Index? Lý do gì Index lại giúp tăng performance truy xuất data trong database ? Dùng index có tác hại gì không?

8.1- Trong database, sự khác nhau giữa primary key và unique key?

8.2- Có kinh nghiệm làm qua database lớn trong các dự án trước chưa?

8.3- Trong Entity Framework, khi nào dùng SELECT, khi nào dùng WHERE ?

8.4- Có sự khác biệt gì khi method trả về một IQueryable với IList ?

8.5- Giữa code first với database first có gì khác nhau?

9- Có sử dụng framework frontend nào chưa? Dùng framework đó để làm qua các chức năng gì? Có biết giữa angular/react hoặc vuejs có gì khác nhau không? Thích framework nào nhất và tại sao?

10- Khi build một cái ứng dụng, theo em thì tiêu chí quan trọng nhất mình cần phải suy nghĩ là gì?

11- Parallel và Multi-Thread programming là gì? Hai kỹ thuật đó khác nhau ở điểm nào?

12- Có biết vê git chưa? Có biết ý nghĩa của stash là gì không? Có dùng qua cherry pick chưa? Có biết về git merge với git rebase chưa? Có sự khác biệt gì giữa git merge với git rebase không?

13- Có làm qua các frontend framework nào chưa? jquery / angular / react ? Đang dùng version nào? Giữa jquery với angular có thấy có gì khác nhau không? Khi nào nên dùng angular, khi nào nên dùng jquery ? Nếu dùng ASP.NET MVC thì có nhu cầu phải dùng angular nữa không?

14- Mở Visual Studio, Viết một hàm trả về tổng của 2 số bất kỳ

(hàm nhận input 2 tham số là con số và trả về tổng của 2 số đó --> lưu ý trường hợp tổng vượt range của số nguyên)

14.2- Viết một hàm trả về đảo chuổi của một string. VD: “abcd” --> “dcba”. (Lưu ý: cần xử lý tình huống người ta truyền null vào)

14.3- Viết hàm kiểm tra một chuổi có phải là palindrome không ? VD về từ palindrome: RACECAR hoặc 103301 (Lưu ý: cần xử lý tình huống người ta truyền null vào)

14.4- Viết hàm nhận vào một chuổi và trả về ký tự nào được lặp lại nhiều lần nhất trong chuổi đó. VD: “testing” --> ‘t’ được lặp lại nhiều nhất (Lưu ý: cần xử lý tình huống người ta truyền null vào)

14.5- Viết hàm nhận vào hai list đã được sắp xếp theo thứ tự tăng dần và trả về list là merge của 2 list đó cũng sắp xếp theo thứ tự tăng dần. VD: truyền list1= [1 , 3, 6], list2=[2, 7, 8, 9] thì sẽ trả về list=[1, 2, 3, 6, 7, 8, 9] (Lưu ý: Không được dùng hàm sort của thư viện/hệ thống)

P/s: Nếu bạn muốn đọc thêm các câu hỏi khác về cuộc phỏng vấn của mình thì có thể đọc chi tiết tại đây nhé!

Mình đang tạo ra 1 cái site nho nhỏ để notes lại những câu hỏi phỏng vấn và tổng hợp câu trả lời cho mọi người.

#ntechdevelopers

4 Likes

Góp ý nhỏ là trong các link của bạn đều có ?fbclid= , mình rất dị ứng cái này của Facebook, bạn có thể bỏ nó đi được không?

3 Likes

Ah mình share từ fanpage của mình ra ý mà. Xíu mình sẽ update

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?