Hotline tư vấn - khiếu nại

Những chủ đề thường được hỏi về tuyển dụng 1 developer

1. Chọn một ngôn ngữ cho các câu hỏi phỏng vấn.

Thông thường bạn sẽ được khuyên rằng nên dùng ngôn ngữ mà bạn cảm thấy thoải mái và tự tin nhất, hoặc là bạn có nhiều kinh nghiệm nhất với nó, nhưng có một số thước đo khác cũng được đưa ra để xem xét ở đây. Theo quan điểm của tôi, những thước đo này được xây dựng dựa trên sự hỗ trợ của cấu trúc dữ liệu, có nguy cơ mắc vào những lỗi ngôn ngữ cụ thể/ riêng biệt và sự tinh tế của việc viết code trên bảng trắng. Tôi sẽ cố gắng để so sánh Java, Python và C++ dựa trên những số liệu. Lời phản biện: tôi  thiên về Java, do đó bạn có thể sẽ thấy nó tốt hơn so với những ngôn ngữ khác trong một vài hoặc tất cả những thước đo, tuy nhiên, đây chỉ là quan điểm cá nhân của tôi, bạn cũng có thể tự làm một bài phân tích tương tự. Người phỏng vấn thường sẽ không bị ràng buộc bởi bất cứ một ngôn ngữ cụ thể nào vì vậy bạn có thể chọn bất kỳ một ngôn ngữ nào bạn muốn.

1.1. Kinh nghiệm:

experience

Điều này có thể đúng với người này nhưng không đúng với người kia. Hãy chắc chắn rằng  bạn không chỉ dựa vào yếu tố duy nhất này. Tôi chọn C++ chỉ vì điều đó và nó đã khiến cho tôi thất bại trong rất nhiều cuộc phỏng vấn để nhận ra rằng C++ không phải là một lựa chọn phù hợp đối với tôi. Đừng sợ hãi khi chuyển sang một ngôn ngữ khác chỉ bởi vì bạn chỉ dành ra một khóa học để sử dụng nó. Tôi chỉ có một chút kinh nghiệm với Java nhưng việc luyện tập các câu hỏi phỏng vấn đã dạy tôi tất cả những kiến thức về Java mà tôi cần.

1.2. Được xây dựng dựa trên sự hỗ trợ của DS:

Theo kinh nghiệm của tôi, tôi thấy rằng sự hỗ trợ của Java DS là tuyệt vời. Javadocs cung cấp/đem đến sự hỗ trợ tuyệt vời để hiểu tất cả những chức năng cơ bản mà bạn có thể cần từ một DS cũng như là trực quan của nó?!? Tôi cảm thấy không thoải mái với sự hỗ trợ DS của C++ như là khi họ đặt tên kỳ cục như: ordered_set và tên phương pháp không trực quan. Điều đó cũng rất quan trọng để thấy được làm thế nào một ngôn ngữ lập trình cho phép bạn mở rộng việc xây dựng trong DS, tôi đã từng tham gia một cuộc phỏng vấn mà tại đó tôi phải thiết kế một bảng Hash hiện đại và khi tôi mới chỉ mở rộng bảng Hash bằng cách làm quá tải những hash code của nó để hoàn tất việc thực hành đó và người phỏng vấn đã rất hài lòng khi tôi đã không cố gắng đi theo vết xe đổ/ vẽ rắn thêm chân. Vì vậy, điều quan trọng là phải biết tất cả bên trong và bên ngoài của DS cho ngôn ngữ mà bạn lựa chọn. Tôi có nghe nói Python có một tập hợp dữ liệu khá tốt nhưng tôi không có đủ kinh nghiệm về nó để có thể đưa ra ý kiến về điều này.

1.3. Rủi ro về những lỗi ngôn ngữ cụ thể:

Trong C++, bạn cần phải rất thận trọng trong việc quản lý bộ nhớ. Bạn có thể vấp vào những lỗi như không phân bổ đủ bộ nhớ, không giải phóng bộ nhớ sau khi sử dụng, không kiểm tra lại sau mỗi lần malloc nếu việc phân bổ đã thành công, mắc phải lỗi đặt con trỏ sai vị trí và tôi chắc chắn rằng còn nhiều hơn thế nữa. Java - xét trên khía cạnh khác, không mắc phải một vấn đề nào.

1.4. Sự tinh tế:

Điều này có thể là không quan trọng nhưng hãy xem xét xem nếu bạn có thể viết những dòng code đó lên bảng trắng nơi mà những khoảng trống là hữu hạn và có lúc nó sẽ trở nên khó khăn để có thể vừa vặn với những dòng code như: unordered_set<Node> hash map = …

Ngoài ra nếu bạn cần phải thêm một số bài kiểm tra như kiểm tra xem nếu malloc làm việc, chúng chiếm không gian quý báu trên bảng và không trợ giúp cho cuộc phỏng vấn thể hiện được bạn có thể code tuyệt vời như thế nào.

Tôi rất hài lòng với những kinh nghiệm làm việc với Java của mình nhưng hãy nghĩ về tất cả những thước đo và hãy suy nghĩ thật kỹ trước khi đi sâu vào sự chuẩn bị cho bất kỳ một ngôn ngữ nào.

2. Cạm bẫy phổ biến nên tránh trong suốt cuộc phỏng vấn

common pitfall

Dưới đây là một trong số những sai lầm nghiêm trọng mà tôi thường mắc phải và nghĩ là sẽ tốt nếu chia sẻ để mọi người cùng biết.

2.1. Không vận dụng hiệu quả thời gian của mình

Đây là một vấn đề lớn, tôi thường viết lên bảng một cách chậm rãi và gọn gàng, cố gắng bình tĩnh để giúp cho những người phỏng vấn hiểu về thuật toán của mình và vì vậy, ông ta hiểu rõ về những gì tôi làm. Đây là một điều tốt nhưng cùng với đó nó đem đến chi phí rất lớn, đó là thời gian. Hãy nhớ rằng, những câu hỏi này là những gì mà bất cứ người lập trình viên reasonable nào cũng có thể giải quyết, vì vậy, bạn phải làm bản thân khác biệt bằng cách tạo ra những lỗi code miễn phí trong thời gian ngắn nhất có thể.Trong suốt 45 phút phỏng vấn, nếu bạn dành ra 30 phút chỉ để nói về câu hỏi đầu tiên thì người phỏng vấn có thể sẽ không đưa ra câu hỏi thứ 2 cho bạn mà chỉ yêu cầu bạn lặp đi lặp lại câu hỏi đầu tiên, và điều đó đem đến cho bạn ít cơ hội để thể hiện khả năng lập trình của bản thân. Mặt khác, nếu một ứng viên hoàn thành câu hỏi trong vòng 20 phút, người phỏng vấn sẽ đưa ra một câu hỏi khác và nếu ứng viên có thể đưa ra câu trả lời/ cách giải quyết trong 25 phút tiếp theo thì anh ta đã tạo ra một ấn tượng tuyệt vời đối với người phỏng vấn. Hãy đặt vào địa vị bản thân mình, bạn sẽ thuê người trả lời được 1 hay 2 câu hỏi. Trong sự quan tâm về việc tiết kiệm thời gian, tôi bắt đầu lý giải những thuật toán của mình nhanh hơn để có được sự chấp thuận của người phỏng vấn càng nhanh càng tốt và tôi bắt đầu viết code nhanh nhất có thể mà không quan tâm nó có gọn gàng hay không. Có người nói rằng đừng vội vàng bỏ qua những cuộc phỏng vấn, hãy ngồi lại bình tĩnh và suy nghĩ về tất cả những gì bạn đã làm và nói nhưng điều đó chỉ thực sự hiệu quả và thậm chí không lãng phí một giây nào vì nó sẽ đem đến một khác biệt rất lớn vào phút chót.

2.2. Đừng loại bỏ những chức năng phụ trợ và lãng phí thời gian vào việc viết những đoạn code vô nghĩa

Xem xét một vấn đề là bạn phải tìm tất cả những thứ tự có thể có của một chuỗi, nó cũng là một chuỗi đối xứng. Bây giờ, người phỏng vấn muốn xem cách bạn quay lại và xử lý với những cảnh báo liên quan đến chuỗi đối xứng ra sao. Có thể xem như nhà tuyển dụng/ người phỏng vấn tin tưởng vào khả năng code chuỗi đối xứng của bạn khi đưa ra yêu cầu này, nếu không bạn sẽ không được làm nó ngay tại buổi phỏng vấn. Thật tuyệt vời khi chỉ sử dụng các chức năng của chuỗi đối xứng như thể nó đã được thực hiện và nếu nhà tuyển dụng muốn bạn sử dụng chuỗi đối xứng để code ra những chức năng phụ trợ khác chỉ sau khi bạn đã hoàn thành những phần chính . Mặc dù phần lớn thời gian họ sẽ không làm như vậy và bạn sẽ tiến hành với những vấn đề được lên kế hoạch tiếp theo. Tuy nhiên, nếu bạn bắt đầu thực hiện chuỗi đối xứng trong đoạn code chính, bạn sẽ mất đi 5 phút quý giá trong cuộc đời bạn và nếu nó vượt quá ngưỡng 25 phút, bạn có thể phải  trả giá bằng công việc của chính mình. Vì vậy, hãy để mắt đến cái gì là quan trọng và cái gì chỉ là việc so sánh đổi chiếu lỗi hay chỉ là những đoạn code thông thường mà không thể thể hiện được bạn tuyệt vời như thế nào và có thể chiếm hết thời gian của bạn.

2.3. Đừng quá tự tin vào những gì mình nói

Nhà tuyển dụng đang cố gắng siết chặt bạn, xem bạn như một ứng viên tiềm năng và muốn bạn đóng góp cho những dự án trong tương lai với những ý kiến đầy giá trị của họ. Nếu bạn không nhấn mạnh những gì bạn nghĩ là đúng với một sự tự tin tuyệt đối, họ sẽ không nghĩ bạn là người đó. Điều đó có thể không đến với bạn một cách tự nhiên nhưng nó là một kỹ năng quan trọng để đạt được và những cuộc phỏng vấn giả có thể giúp bạn trong trường hợp này. Nếu bạn nói như thể bạn biết s**t của bạn thường xuyên hơn thì không ai có thể thách thức cho dù bạn có thực sự biết nó hay không.

3. Xây dựng một lịch trình chuẩn bị

Schedule

Điều quan trọng để tạo ra một lịch trình phù hợp để bạn có thể điều chỉnh tốc độ của bản thân cho hợp lý. Tôi có thể đưa ra một lịch trình mẫu của một người bắt đầu quá trình chuẩn bị vào 16/10 và muốn có một công việc vào ngày 17/5. Bạn có thể dịch chuyển những ngày này sang ngày mà bạn dự định bắt đầu lịch trình của mình. Chúng ta sẽ quay lại với ngày bắt đầu dự kiến. Nếu bạn muốn khởi động một cuộc chiến tranh giành từ các công ty khác nhau, bạn cần có một lịch trình chắc chắn để bạn có thể đưa ra các cuộc phỏng vấn của họ cùng thời điểm bạn bắt đầu nhận những lời đề nghị cho công việc.

Ngày dự kiến bắt đầu: 1/5/2017

Ngày nhận thư thông báo: 15/3/2017

Công việc có khuynh hướng sẽ tràn ngập trong 1 hoặc 2 tháng trước ngày bắt đầu

Buổi phỏng vấn cuối cùng: 1/3/2017 (2 tuần nhận xét)

Buổi phỏng vấn trực tiếp đầu tiên: 10/2/2017

Bắt đầu xuất hiện trước những cuộc phỏng vấn từ xa: 1/1/2017

Tháng một là thời gian cao điểm cho việc đăng tuyển công việc và phần lớn đơn đăng ký sẽ tràn ngập vào cuối tháng. Hãy chắc chắn rằng bạn đã chuẩn bị chu đáo trước khi tháng một bắt đầu. Năm ngoái tôi có một lịch hẹn phỏng vấn qua điện thoại với Linkedin vào ngày 4/1 và họ đã phải hủy nó vì vị trí này đã tìm được người ngay trước khi tôi phỏng vấn.

Bắt đầu gửi email ngẫu nhiên đến các nhà tuyển dụng với những cover letter ngắn: 15/12/2016

Bắt đầu tập dượt với những cuộc phỏng vấn giả: 15/12/2016

  • Nên tập ít nhất 1 buổi phỏng vấn 1 tuần bắt đầu từ ngày bắt đầu.

Ứng tuyển qua cổng thông tin của tất cả các công ty: 15/11/2016

Bắt đầu trên interviewbit.com: 1/11/2016 (hoàn thành trong 6 tuần)

Bắt đầu liên hệ để nhận thư giới thiệu: 1/11/2016.

Điều này rất quan trọng để nhận thư giới thiệu trước khi ứng tuyển qua cổng thông tin bởi vì sau đó bạn của bạn có thể nhận được phần thưởng từ việc giới thiệu, vì vậy họ có thêm động lực để giới thiệu bạn. Bạn cũng nên hỏi họ xem liệu có nên ứng tuyển tại thời điểm mà có rất nhiều cách khác để ứng viên có thể đến thông qua giới thiệu.

Bắt đầu CtCi: 15/10/2016 (hoàn thành trong 2 tuần)

Bắt đầu viết sơ yếu lý lịch: 1/10/2016 (hoàn thành trong 2 tuần)

 

Người dịch: Hà Chi.

Nguồn: mohsinali.net.