Chào các bạn, có rất nhiều bạn hỏi mình rằng: Em sắp đi phỏng vấn công ty ABC anh có thể tư vấn cho em biết em cần chuẩn bị những gì không? Mình đã phải trả lời lại rất nhiều lần nên hôm nay mình sẽ viết một bài chi tiết về những gì cần chuẩn bị trước khi đi phỏng vấn vào vị trí .NET Developer nhé. Xin nhớ là bài viết này mình chỉ hướng dẫn cho các bạn cần chuẩn bị những gì chứ mình không đi nghiên cứu hộ các bạn nhé. Cái gì tự mình tìm hiểu sẽ nhớ nhất và chắc nhất.
Một số thứ như kỹ năng teamwork, đọc tài liệu mình có liệt kê trong mindmap nhưng không nói đến vì cái đó là mặc định mà không ai hỏi đến nhưng rất quan trọng khi các bạn làm việc. Còn nữa, việc các bạn biết và chém gió được chưa chắc đã làm được như thế, nhưng vẫn hơn là không biết và nếu biết những điều này các bạn hoàn toàn có thể đào sâu để áp dụng chứ không chỉ là học vẹt để đi phỏng vấn.
Bản thân mình cũng là một người thường phải phỏng vấn ứng viên .NET Developer ở tại công ty mình đang làm việc nên mình rất hiểu điểm yếu chung của các bạn ứng viên hiện nay đồng thời hiểu luôn cả yêu cầu và mong muốn của nhà tuyển dụng. Tuy rằng mỗi nhà tuyển dụng lại yêu cầu khác nhau tùy theo dự án hay thị trường mà họ đang làm nhưng vẫn có phần điểm chung với .NET Developer.
Thực tế
Một vài nhận xét về các ứng viên hiện nay mình đã phỏng vấn, nhìn chung thị trường rất nhiều người làm lập trình, và ở Việt Nam thì lượng lập trình viên .NET chiếm cũng phần lớn. Nhưng tại sao nhà tuyển dụng vẫn rất thiếu nguồn nhân lực chất lượng tốt? Mình không phủ nhận Việt Nam mình rất nhiều người làm tốt nhưng đến một thời điểm nào đó thì họ không muốn nhảy việc, hơn nữa họ đã được thăng tiến ở một công ty nào đó và nhận những chính sách đãi ngộ tốt. Nên những người đi phỏng vấn thường là những bạn mới ra trường hoặc ít kinh nghiệm, còn lại nhiều kinh nghiệm thì thường là muốn thay đổi môi trường, muốn tăng lương…tức là không được đãi ngộ tốt ở công ty hiện tại.
Đánh giá tổng quan như vậy để thấy rằng các bạn đang rất có nhiều cơ hội để tìm việc trong dòng .NET Developer. Vì thế các bạn cần tự tin nếu như mình có kiến thức và kỹ năng tốt. Vì tự tin các bạn sẽ thể hiện được năng lực tốt nhất có thể trước mắt nhà tuyển dụng đồng thời đàm phán được một mức lương xứng đáng với khả năng của mình.
Vậy trước khi đi phỏng vấn chúng ta cần chuẩn bị những gì?
Dựa vào cái mindmap mình đã xây dựng theo hình bên dưới để các bạn mường tượng ra tổng quan các bạn cần những gì? Sau đó mình sẽ giảng giải chi tiết hơn về từng phần một. Có những thứ đó các bạn sẽ tự tin và thấy mình còn thiếu những gì để có thể lấp vào đó.
Cơ bản về lập trình OOP
Đây là điều bắt buộc các bạn phải biết trong khi đi phỏng vấn, các bạn không nắm vững cái này thì sẽ có khả năng cao là bị loại vì đây là những kiến thức hết sức căn bản. Để nắm chắc OOP tức là lập trình hướng đối tượng, các bạn cần nắm chắc khái niệm và các tính chất của nó (có 4 tính chất). Mỗi tính chất cac bạn phải hiểu và lấy ví dụ được đồng thời các bạn cũng phải nêu ra được tác dụng của nó.
Ngôn ngữ lập trình C#
Về ngôn ngữ lập trình C#, các bạn không cần thiết phải cái gì cũng biết nhưng một số điểm các bạn nên biết về Interface và Abstract class hay hiểu biết về các collection trong C#.NET. Ngoài ra các bạn cũng cần hiểu về đa luồng, extension methods, delegate, xử lý bất đồng bộ, overriding method, và tổng quan các thư viện hay dùng nhất.
ASP.NET MVC và WebAPI
Về ASP.NET MVC các bạn cần nắm rõ mô hình MVC là gì? Trong ASP.NET MVC có các thành phần gì? Cách truyền dữ liệu từ Controller về View có những cách nào? ViewBag, ViewData, TempData và Session? Sự khác nhau giữa chúng như thế nào? Khi nào thì dùng cái nào?
Ngoài ra có cơ chế Routing, ASP.NET Identity, Antiforeign, WebAPI, kiến thức về REST và Restful API…
Entity Framework và ADO.NET
Câu hỏi hay hỏi nhất trong khi phỏng vấn .NET Developer là bạn đã làm việc với Entity Framework chưa? Có những cách làm việc nào? Vậy là các bạn phải trả lời được có 3 cách là DB First, Code First và Model First. Vậy là các bạn phải nêu được ưu nhược điểm của cả 3. Thường là DB First và Code First sẽ được hỏi nhiều nhất.
Một trong những câu hỏi hay được hỏi nhất về Entity Framework sẽ là phần Migration nếu bạn trả lời hay dùng Code First. Còn lại DB First thì các bạn cũng sẽ được hỏi những nội dung còn lại ngoài phần migration đó là phải hiểu về Linq to Entity tức là khi nào dữ liệu của bạn được load ra, dùng Iqueryable ra sao? Cách tối ưu hóa câu lệnh LinQ khi truy vấn database rồi cách phân trang bản ghi với LINQ.
Ngoài ra các bạn cần nắm được cách debug từ LINQ bản chất là gen ra câu lệnh SQL để execute trong SQL Server nên các bạn cần nắm được cách thức để debug, tracing và tối ưu hóa nó.
Đôi khi các dự án có làm ADO.NET có thể là call các store procedure trong SQL Server vì giờ không ai viết câu lệnh raw SQL trong code cả
Kỹ năng Unit Test
Đây là kỹ năng viết các đoạn code để kiểm thử ở mức đơn vị đối với các function code ra, trong .NET các bạn thường sử dụng MSUnit có sẵn của Visual Studio hoặc Nunit để viết các đoạn mã kiểm thử. Kỹ năng này không bắt buộc nhưng là điểm cộng của các bạn.
SQL Server
Về SQL Server ngoài việc viết lệnh CRUD thì các bạn còn phải tìm hiểu về Store Procedure, Triggers, Funtions, View đồng thời quan trọng hơn là cách viết lệnh tối ưu, đánh index để tăng tốc độ cho câu lệnh.
Kỹ năng quản lý source code
Các bạn cần có kỹ năng quản lý source code khi làm việc với các SCM như Git hay SVN, TFS…để giúp làm việc nhanh và hiệu quả hơn.
Một số Design Pattern
Các bạn làm dev có thể không phải sử dụng nhiều vì các SA họ đã áp dụng đối với core của công ty nhưng các bạn nên biết để hiểu và tốt cho việc phát triển sự nghiệp của mình. Hơn nữa lên senior thì phải biết Design Pattern chứ nhỉ.
Principles
Các bạn cũng phải biết một số principle tiêu biểu là SOLID, cái này thì trong TEDU có bài viết về SOLID các bạn có thể xem ở đây.
Kiến thức Frontend (Javascript, Jquery, Html, CSS, Angular…)
Các bạn biết các kiến thức này mặc dù không phải là .NET nhưng nếu một công ty họ tuyển Fullstack developer thì những điều này giúp bạn tăng giá trị trong mắt nhà tuyển dụng.
Cách viết code sạch và tối ưu hóa code
Cách viết code sạch và tối ưu này mình rất coi trọng vì nếu các bạn làm junior hay senior thì việc các bạn viết Code nói lên chất lượng thực sự của các bạn. Kỹ năng này bao gồm việc đặt tên biến, tên hàm, class, cách viết code sao cho dễ đọc dễ maintenance …Giúp việc sử dụng lại code dễ dàng hơn nhất là khi các bạn làm một sản phẩm lâu dài thì nó lại càng hữu ích. Đây là một kỹ năng rất cần thiết và rất được các bậc tiền bối coi trọng.
Tóm lại
Là một .NET developer không chỉ biết code tốt, mà cần các kỹ năng liên quan nữa như thế mới thực sự có value. Hơn nữa code tốt không bằng thái độ tốt, nhiều khi kỹ năng của bạn chưa được như người ta mong muốn nhưng thái độ của bạn khi phỏng vấn cũng làm người ta thấy mình có tiềm năng phát triển và có thể đáp ứng được công việc. Kể cả khi mình giỏi thật thì thái độ cũng phải khiêm tốn và cầu thị vì không ai giỏi tất cả. Cuối cùng là tư duy về sản phẩm, một developer giỏi không phải chỉ giỏi kỹ thuật mà phải hiểu khách hàng cần gì cũng đừng giới hạn mình theo những gì mình nói trong bài viết này mà phải mở rộng hơn nữa? Làm khách hàng hài lòng và làm sao để lợi cho khách hàng, lợi cho người thuê mình tức là lợi cho chính mình.
(Lưu ý: Các trang web đăng lại bài viết này đều phải dẫn nguồn từ TEDU.COM.VN)
Tác giả: Bạch Ngọc Toàn
Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.