(Lần đầu phỏng vấn, lần đầu viết bài
)
Hello ae!
Chuyện là tôi vừa có một cuộc phỏng vấn Java Fresher (online) vô công ty A. HCMC. Muốn chia sẻ một chút với ae (mới phỏng vấn chưa biết kết quả
) ae nào lười chắc lướt qua cmnl vì bài viết của tôi dài vl
Nói sơ qua một chút về quy trình pv: Vì là mùa dịch, chương trình Fresher chỉ có duy nhất 1 vòng, pv trực tuyến bằng Tiếng anh Tôi apply cv đúng 2 ngày thì được hẹn pv, hẹn luôn vào buổi hôm sau ae ạ
Nói chung kiến thức java tôi nắm khá tốt nên không lo về vấn đề đó, lo mỗi cái là Tiếng anh như hạch, nói thiệt là cả 3 năm đại học tôi không học 1 chữ tiếng anh nào, giao tiếp bình thường chắc chả biết nói gì
Lần đầu pv lo vãi đ@i, cũng vội vội vàng vàng ôn tủ mấy câu tiếng anh giới thiệu bản thân, giới thiệu đồ án trên trường, rồi OOP là gì, 4 tính chất OOP, mấy câu SQL cơ bản như Group By là gì, Join là gì, tôi còn ôn luôn cả framework Spring, Hibernate, Design pattern tùm lum hết. Mé ngồi dịch ra tiếng anh là một chuyện, nhớ hay không là một chuyện. Ôn được ít nản quá bỏ mặc cho số phận
hôm sau như lịch hẹn tôi mở máy lên chờ sẵn trước 10p (họp qua Zoom, bên HR cho mình cái link xong vô chờ). Đến hẹn thì có một chị vô, giới thiệu chị là trưởng phòng và sẽ phỏng vấn tôi.
Nội dung cuộc phỏng vấn như sau:
- Chị: Hôm nay mình sẽ pv qua 3 phần, đầu tiên mình sẽ nói chuyện bình thường với nhau bằng tiếng việt, sau đó phần 2 mình sẽ pv tiếng anh, phần 3 là phần em đặt câu hỏi cho chị. (Xong chị hỏi tôi một số câu hỏi kiểu em tốt nghiệp chưa, bao giờ tốt nghiệp...chủ yếu để mình bớt áp lực ấy mà.) (Xong phần 1) (Sau đó là phần 2: pv tiếng anh)
- Chị: Em giới thiệu về bản mình đi
- Tôi: Em là ABC 10 tuổi đang là sinh viên..... Em học java ở trường được 3 năm rồi và giờ đang muốn tìm 1 job java..... (chém theo văn mẫu soạn ra hôm qua )
- Chị: Vậy em đang dùng Java version nào (ầu shjt, mới câu thứ 2 bắt đầu thấy mùi lệch tủ)
- Tôi: Em dùng Java 8
- Chị: Em có thể cho chị biết Java 8 có tính năng gì mới so với các phiên bản trước không (á đù ) ngơ người luôn ae, mang tiếng học java 3 năm đếch biết câu này, lúc đó nghĩ mới pv đã như vầy chắc xong cmnr, chắc chị muốn hỏi xem trình độ học lâu rồi có biết những cái này không)
- Tôi: À, cái này em không biết
- Chị: Không sao em, em có từng nghe qua tính năng nào không, nghe qua thôi chứ chị không hỏi em kỹ đâu. Cho chị 1 cái tên thôi (Trong đầu tôi lúc đó nghĩ ngay tới cái Stream, tại có lướt qua bài viết trên mạng về cái này, mà không biết xài sao, chưa làm bao giờ)
- Tôi: Dạ em biết trong Java 8 có Stream
- Chị: Good, là Stream API......Em có biết Lambda Expression không ? (Tôi có nghe qua nhưng vẫn đếch biết nó làm gì ae ạ, chị hỏi vậy chết em rồi)
- Tôi: Dạ em có nghe qua nhưng chưa làm việc với nó
(Chắc hỏi vậy xem mình có tìm hiểu về những cái mới không)
- Chị: OK, vậy bình thường em dùng cái gì để lặp qua một mảng hay một collection
- Tôi: Em dùng vòng for, và while
- Chị: OK,....giải thích... Chị có nhìn sơ qua CV của em, giờ chị hỏi dựa trên CV của em nhé.
- Chị: Trong java có 4 loại access modifier, trong đó public dùng để khai báo một biến hay một hàm có thể truy cập ở mọi nơi. Thế còn private thì sao, nó sử dụng ở đâu
- Tôi: Chỉ sử dụng ở trong 1 class
- Chị: OK...correct lại...Thế còn trong 1 package thì sao
- Tôi: Mình dùng access modifier là default
- Chị: Vậy cuối cùng còn protected đúng không, em cho chị biết nó sử dụng làm gì
- Tôi: Để các class kế thừa từ 1 class cha có thể dùng được thuộc tính, hay là method của class cha đó
- Chị: Chị hỏi thêm một chút về Java core, thì java là ngôn ngữ hướng đối tượng....giới thiệu xíu về java... Cho chị biết OOP là gì ? (Chắc chắn là tôi biết câu này rồi, nhưng nếu nó là câu hỏi tiếng việt chị này nói chuyện rất có đầu đuôi luôn ae ạ, rất chuyên nghiệp, nhưng mà tôi nghe dài quá lú cmnl, nghe được mỗi mấy cái key word "What....OOP...")
- Tôi: Theo em oop là một phương pháp lập trình....
- Chị: Chị thích suy nghĩ của em... Oop có 4 tính chất là .....Chị thích nhất là tính chất Polymorphism, em giải thích cho chị tính chất này, hoặc lấy ví dụ cũng được
- Tôi: Giải thích (cũng khá ổn)
- Chị: OK, ở trong Java có Interface, tại sao mình lại dùng nó
- Tôi: Để mình ẩn đi độ phức tạp của method, người dùng chỉ sử dụng mà không biết bên trong nó hiện thực làm sao
- Chị: Em cũng có thể tạo ra một class bình thường và tạo hàm trong đó, người dùng khi xài method của class đó thì cũng đâu biết nó ghi gì trong đó , chị thấy nó cũng ẩn đi mà, nó khác gì so với một class thông thường (chuẩn luôn ae ạ)
- Tôi: Để có được tính Abstraction, nói lại ý trên... để mình ẩn đi.... (Thật sự lúc đó không nhớ khỉ gì hết, đáng ra phải nói đa kế thừa, giảm phụ thuộc mới đủ)
- Chị: Trong java chị có thể custom 1 exception đúng không, em có thể cho chị biết cách để custom 1 exception được không
- Tôi: Trong java mình có thể tạo một class và extend class Exception, sau đó mình có thể custom những hàm trong đó (thật sự phần này tôi chưa ôn, không ngờ lại hỏi câu này, từ vựng thì ít nên chỉ chém được vậy, lúc này ước gì có thể giải thích bằng vịt nam mi )
- Chị: Em có thể nói rõ hơn làm cách nào để mình có thể handle 1 exception theo ý của mình được không (khúc này không hiểu ae ạ)
- Tôi: Em khai báo..... (Tôi còn không nhớ tôi nói gì )
- Chị: ví dụ trong một dự án có backend dùng spring boot, frontend dùng angular, nếu như có exception về việc lấy dữ liệu xảy ra thì em sẽ handle nó như thế nào? Em handle ở frontend hay backend (Khóc..., nói dài lắm, nhưng mà chị cố gắng đúc kết lại để hỏi mình)
- Tôi: ... Dạ em handle nó ở backend, tầng service (trả lời đại, có ae nào biết không )
- Chị: Ok, giờ chị hỏi em về array,....chị có một cái mảng chứa số integer như sau, trong mảng này cho phép duplicate giá trị, chị muốn insert một phần tử vô mảng này ở vị trí thứ index với giá trị bất kỳ mà người dùng nhập vô, giờ em có ý tưởng gì không, cho chị 1 ý tưởng, 1 hàm nào đó mà em có thể nghĩ ra. (Thề với ae là câu này nó dài vãi chưởng, tôi không hiểu cái đề bài luôn, tôi ghi ra được tóm tắt như vậy bởi lúc sau tôi xin chị nói lại đề bài bằng tiếng việt )
- Tôi: Dạ em tạo cái mảng mới để copy dữ liệu từ mảng cũ qua và insert phần tử đó vô.
- Chị: Chị chưa hiểu lắm (xong rồi chị đưa ra 1 gợi ý cách làm)
- Tôi: Dạ cho em nói bằng Tiếng việt nha chị .))
- Chị: Ok em nói đi
- Tôi: giải thích (khá ổn)
- Chị: Cũng là mảng đó, chị xóa một phần tử, xáo trộn những phần tử khác lại, làm sao để có thể biết được là phần tử nào đã bị xóa.
- Tôi: suy nghĩ.. Em xài một cái map để lưu số lần xuất hiện của phần tử trong mảng cũ, so sánh với số lần xuất hiện của phần tử trong mảng mới, phần tử nào thiếu thì chính là cái bị xóa.
- Chị: Cũng là 1 cách, nhưng performance nó không tốt. .giải thích...Em có thể về tìm hiểu cách để tối ưu hơn.
- Chị: Rồi mình trở lại nói tiếng anh. Chị thấy CV em ghi skill là javascript. Em từng làm việc với nó chưa (Trở lại nói tiếng anh)
- Tôi: Em học javascript từ năm nhất
- Chị: Giờ chị có đoạn code js như sau...Giải thích sơ qua, đoạn code đại khái có 1 cái nút chứa event, khi bấm vô thì đoạn code trong js sẽ chạy...Rồi em cho chị biết khi bấm vô cái nút đó lần thứ nhất , điều gì xảy ra (ae nào học js cơ bản là biết, dễ thôi à)
- Tôi: abcxyz
- Chị: Vậy khi chị bấm lần thứ 2 thì sao
- Tôi: Nó cũng ra như vậy thôi chị
- Chị: Em trả lời đúng rồi (ầu shjttt, nãy giờ mới nghe được câu này, mừng vãi. Nhưng đó cũng là câu hỏi cuối về technical )
- Chị: Giờ chị không hỏi em về technical nữa. Chị thấy trong CV em có ghi em biết về RESTful, rất tốt, frontend em biết html, css, js, em có biết 1 cái framework frontend nào không.
- Tôi: Em có làm qua 1 đồ án về Angular
- Chị: OK, được rồi bây giờ mình chuyển qua nói tiếng việt nha (chắc thấy mình vật vờ quá)
- Chị: Em có viết JunitTest bao giờ chưa
- Tôi: Em có viết nhưng chỉ ở mức cơ bản
- Chị: Em xài thư viện gì để viết (khúc này tôi không hiểu thư viện ở đây là gì :v)
- Tôi: Dạ em không biết thư viện nào nhưng mà em dùng JunitTest trong java, xài mấy cái Annotation như @test, @BeforeAll, @AfterAll.
- Chị: OK, chị chỉ hỏi vậy thôi chứ không hỏi về technical nữa đâu em đừng lo.
(Sau đó chị hỏi mấy câu như : Ở trường em có hay làm việc nhóm không. Nhóm nhiều nhất em từng làm việc là bao nhiêu người. Qúa trình làm có gì khó khăn. Em giải quyết khó khăn đó thế nào). Chắc là hỏi để biết khả năng làm việc nhóm của mình, thái độ làm việc các thứ, ae trả lời sao cũng được nhưng mà đừng trả lời kiểu bố đời quá :v
(Giờ là phần đặt câu hỏi, bất kỳ câu hỏi gì thắc mắc, phần này chắc không cần review đâu ha ae :v, tôi hỏi cách thức làm việc ở công ty..blahblah.. Được cái chị này rất nhiệt tình, sau khi pv có góp ý cho tôi luôn nên không cần hỏi câu đó :v. Cuối cùng là hỏi mức lương mong muốn.)
------Kết thúc phỏng vấn sau đúng 1 giờ đồng hồ------
- Đó là toàn bộ cuộc phỏng vấn của tôi, nó hoàn toàn không như tưởng tượng ban đầu :v nhìn chung là tôi nói không trôi chảy, lắp bắp và có một số câu hiểu sai câu hỏi. Khả năng fail chắc 90%. Còn lại 10% tôi nghĩ là đến từ cái CV, chị soi khá kỹ, skill tôi ghi trong đó có vẻ chị khá ưng, có 2 cái đồ án làm về web, thêm cái nữa là tôi có giới thiệu mình học Java từ năm nhất tới giờ, nên vẫn còn 1 tý cơ hội.
- Còn về câu hỏi trong lúc pv, tôi nghĩ những câu đó không khó nhưng mấu chốt nhất vẫn là khả năng giải thích bằng tiếng anh, tuy chị đó hỏi dài nhưng nói khá chậm và phát âm rõ chữ cho mình nắm được, do tôi gà quá không hiểu chứ tôi nghĩ ae nghe chắc là hiểu.
- Chị phỏng vấn tôi hôm nay có phong cách pv rất chuyên nghiệp, hỏi và khai thác nhiều khía cạnh của ứng viên, và hỏi xong tôi trả lời sai hay đúng thì cũng được chị correct lại.
------Kinh nghiệm------
1. Học ing lịt ngay đi mấy ông ơi, không thoát khỏi nó đâu. Biết technical rất ghê nhưng không giải thích được thì cũng như thằng không biết thôi.
2. Đừng chém gió trong CV (kinh nghiệm ngàn năm :v)
3. Nếu không nghe kỹ câu hỏi thì cứ hỏi lại, đừng trả lời lụi.
4. Hãy sẵn sàng mọi thứ trước khi nộp cv. Đừng để lúc có lịch pv rồi mới ôn.
5. Nếu ae chưa pv tiếng anh bao giờ và sợ không dám nộp cv, thì khuyên ae cứ tự tin lên, tôi vừa mất đi lần đầu của mình :> Giờ thấy tự tin hơn hẳn.
------Kết bài------
Chúc tất cả ae may mắn và thành công trong các buổi phỏng vấn của mình. HÃY TỰ TIN VÀ THỂ HIỆN
[UPDATE] Tôi pass rồi ae ạ, quá nhanh quá nguy hiểm, apply CV, 4 ngày sau có offer luôn. HR gọi và đánh giá như sau: Kiến thức có hiểu biết tốt ở mức cơ bản, có tìm hiểu về công nghệ và những cái mới, tuy nhiên tiếng anh hơi yếu, với vị trí Fresher, công ty thấy em đủ điều kiện và em có thể quyết định tham gia vào công ty :v Tôi có thời gian vài ngày để quyết định. Tôi đang có lịch phỏng vấn với công ty B, nhưng mà tới ngày đó thì hết hiệu lực offer
Các ae có kinh nghiệm cho em xin tư vấn. Một bên lương cao nhưng hợp đồng 2 năm, một bên lương thấp nhưng hợp đồng ngắn hơn, không biết cái nào tốt cho career path.