GIAI ĐOẠN 1. Đào tạo
Tôi đến với JavaRush một cách có ý thức: bảng giá đầy đủ hàng tháng, cấu trúc tài liệu rõ ràng, thực hành nhiều và sự hiện diện của cộng đồng của riêng tôi. Điểm đầu tiên đều rõ ràng, nhưng việc học một ngôn ngữ không có cấu trúc khá khó khăn và việc đào tạo như vậy chắc chắn sẽ khiến một người có những lỗ hổng nghiêm trọng về Java Core. Kinh nghiệm từ các cuộc phỏng vấn và thông số kỹ thuật cho thấy rằng các câu hỏi về “cốt lõi” có thể được sử dụng cho mọi thứ: từ dịch chuyển theo bit và truyền các khái quát đến IO và tuần tự hóa. Thực hành là điều cần phải có; Tôi vẫn chỉ có thể hiểu và nhớ được một nửa số điều nếu tôi tự viết ra. Chà, cộng đồng: bạn đã giải quyết được vấn đề - hãy khoe khoang về nó trong phần bình luận; Nếu bạn chưa quyết định, bạn có thể đặt câu hỏi, nhưng rất có thể sẽ không có ai đưa ra giải pháp làm sẵn cho bạn. Và tôi đã quay lại các bài viết tùy chỉnh về các chủ đề miễn phí ngay cả sau khi kết thúc khóa học, có rất nhiều nội dung hay để bắt đầu (đặc biệt là trải nghiệm đầu tiên với các khung sử dụng ví dụ từng bước + câu hỏi phỏng vấn). Nói chung, tôi biết ơn dự án này vì cơ sở mà tôi đã nhận được, nhưng tôi sẽ không chỉ dựa vào JavaRush - cùng một Shildt tốt nhất là “chồng chéo” về chủ đề đang được nghiên cứu và thường tiết lộ một số điểm. Rất nhiều điều đã được nói trong các bài đánh giá về các nhiệm vụ đôi khi đi trước lý thuyết và buộc bạn phải tìm đến Google. Đối với tôi, đây là một điểm cộng hơn là một điểm trừ - và thực tế không phải là tình hình bây giờ giống như khi tôi còn đi học. Lời khuyên ngay lập tức dành cho những người, giống như tôi, nhập Java “từ đầu” : ở một giai đoạn nào đó bạn có thể trở nên nhàm chán hoặc khó khăn:-
Mọi người đều bắt đầu lại từ đầu rất khó; Chúa ơi, chỉ có 5% số người hoàn thành khóa học. Nhiệm vụ của bạn là trở thành một trong số họ.
-
Sự hứng thú của tôi xuất hiện sau một hoặc hai tháng, khi các nhiệm vụ trở nên khó khăn và thú vị hơn. Kiên nhẫn.
- Điều chính là sự tiến bộ hàng tuần. Sau hai tuần nghỉ ngơi, việc quay trở lại đã khó khăn và không phải ai cũng có thể viết hàng ngày trong vài tháng liên tục. Hãy đặt cho mình giới hạn số giờ trong tuần - ví dụ: 15. Bạn có thể viết mã trong 1,5 giờ mỗi ngày trong tuần và 3-4 giờ nữa vào cả hai ngày cuối tuần hoặc bạn có thể nghỉ một vài buổi tối, nhưng “giới hạn cuối tuần” sẽ tăng. Bằng cách này, lịch trình sẽ linh hoạt nhưng đều đặn. Tất nhiên, sau đó có thể đo lường công việc theo nhiệm vụ và dự án, nhưng ở cấp độ cú pháp và hạt nhân, tính bằng giờ là đủ.
GIAI ĐOẠN 2. Tự giáo dục
Vì vậy, tôi đã không nhận được suất thực tập: Tôi chỉ còn vài ngày về các yêu cầu kỹ thuật cho đến khi kết thúc đợt tuyển dụng vào nhóm và không có thời gian để tìm hiểu các yêu cầu - có quá nhiều từ xa lạ. Bởi vì Tôi không muốn đợi thêm ba tháng nữa, tôi quyết định tự mình bước tiếp. May mắn thay, có hướng dẫn và video hướng dẫn cho tất cả các framework phổ biến. Trong vài tháng tiếp theo, tôi đã xử lý Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, thành thạo SQL và cố gắng kết hợp tất cả lại thành một tổng thể duy nhất. Sáu tháng sau, tôi có những dự án đáng sợ khi xem xét, nhưng tôi đã có được kinh nghiệm thực tế trong việc sử dụng các khung “người lớn” và GitHub có thể được hiển thị theo yêu cầu của nhà tuyển dụng tiềm năng. Lời khuyên :-
Bạn tìm hiểu về .gitignore càng sớm thì càng tốt. ;)
-
Nhiều hướng dẫn bao gồm nhiều khung cùng một lúc; sử dụng cái này và thêm của riêng bạn. Chúng tôi đã viết một cửa hàng trực tuyến bằng Maven + Spring Boot + Data - thêm ủy quyền, kiểm tra đơn vị và ghi nhật ký.
-
Đối với các dự án web, bạn có thể lấy các mẫu giao diện người dùng miễn phí từ Internet - chúng dễ chịu hơn khi làm việc, chúng trông đẹp hơn dưới dạng ảnh chụp màn hình trong README trên Git. Đồng thời, bạn sẽ có thể nhớ HTML và CSS - bạn có thể muốn sửa kiểu và bố cục.
Những gì tôi đã bỏ lỡ (sau này tôi đã thất bại trong một cuộc phỏng vấn)
-
Thuật toán. Để tránh những sai lầm của mình, tôi ngay lập tức giới thiệu một cuốn sách ngắn bằng tiếng Nga, “Thuật toán Grocking”. Độ phức tạp của thuật toán là gì, nó bao gồm những gì, tại sao quicksort là không đủ, phần giới thiệu về lý thuyết đồ thị - mọi thứ đều ở đó và bằng ngôn ngữ dễ hiểu nhất.
-
Bộ sưu tập "dưới mui xe". Tôi không nhớ liệu điều này có trong JavaRush hay không, nhưng sẽ rất hữu ích nếu biết HashMap.get() hoạt động như thế nào hoặc tại sao HashSet không được đảm bảo duy trì thứ tự phần tử. Một lần nữa - bộ sưu tập nào là luồng an toàn và tại sao.
-
SQL. Bạn cần ít nhất tối đa THAM GIA - chúng là gì, chúng hoạt động như thế nào, khả năng viết CHỌN trên hai bảng trên giấy một cách nhanh chóng. Tôi khuyên dùng www.sql-ex.ru: nó sẽ đưa bạn đến cấp độ mong muốn sau một hoặc hai ngày.
-
Spring Core: có những loại chú thích nào, ngữ cảnh là gì, đậu được tạo ra như thế nào, Bean Scope nào là an toàn cho luồng và cách giải quyết việc tiêm lẫn nhau - tất cả các câu hỏi phỏng vấn. Cách trả về một trang, cách trả về JSON, v.v. Tôi hiện đang đọc “Mùa xuân 5 dành cho chuyên gia” bằng tiếng Nga, nhưng nhìn chung họ khuyên dùng “Mùa xuân hành động”.
GIAI ĐOẠN 3. Tìm kiếm việc làm
Trên thực tế, trong vài tháng đầu tiên sau khi hoàn thành các dự án tại nhà, tôi đã gửi khoảng 30 phản hồi cho các vị trí tuyển dụng Junior\Trainee khác nhau (thông qua HH, LinkedIn, các cơ quan tuyển dụng), nhưng kết quả gần như bằng không. Tôi chỉ tập trung vào những vị trí tuyển dụng chưa có kinh nghiệm, thành thật chỉ ra những công việc quen thuộc với mình và viết về khả năng học tập cao của mình trong thư xin việc. Kết quả là hai cuộc gọi (một trong số đó ngay lập tức kết thúc bằng tiếng Anh sơ cấp của tôi), thêm hai công ty gửi thông số kỹ thuật, chỉ có một “cuộc họp”, và sau đó tôi ở đó một mình giải quyết các vấn đề về thuật toán trên một tờ giấy, sau đó bộ phận nhân sự chỉ cần lấy giấy tờ đi và "Chúng tôi sẽ gọi cho bạn." Tôi đã cố gắng xin một vài suất thực tập (không lương và được trả lương có điều kiện): Tôi đã thực hiện các yêu cầu kỹ thuật, nhưng không vượt quá mức an sinh xã hội cuối cùng; nhưng bây giờ tôi có thể nói rằng các học viên chắc chắn được tuyển dụng bởi T-Systems, CFT, Andersen và EPAM (họ có nhiều ý kiến trái chiều, hãy tự quyết định). Đối với tôi, đó là một cách tốt để tham gia vào lĩnh vực này nếu bạn có cơ hội ngồi không có thu nhập trong vài tháng và không chết =) Nói chung, sau trải nghiệm này, tôi hơi chán nản và tạm dừng toàn bộ câu chuyện tìm kiếm trong gần sáu tháng - tôi tiếp tục làm việc trên hồ sơ trước đó, viết một số ứng dụng chỉ để giải trí, nhưng thậm chí còn không đăng chúng lên Git. Cho đến khi tôi gặp một người quen, người mà tôi tình cờ kể về những thất bại với các vị trí tuyển dụng: lúc đó anh ấy đang làm nhà phát triển cấp trung, nhưng anh ấy cũng bắt đầu theo cách tương tự - bằng việc tự học. Một người quen đã cho tôi một vài lời khuyên mà chính anh ấy đã sử dụng và điều này đã giúp ích rất nhiều cho tôi trong quá trình tìm kiếm việc làm trong tương lai. Theo dõi họ hay không là tùy thuộc vào bạn, bởi vì... theo một cách nào đó, họ không hoàn toàn trung thực. Vì vậy, trích dẫn thêm:-
Bằng mọi cách, hãy cung cấp cho bản thân hơn 6 tháng kinh nghiệm thương mại trong sơ yếu lý lịch của bạn: thực tập, dự án tốt nghiệp, làm việc tự do, làm việc từ xa - bất cứ điều gì. Điều này sẽ giúp ích rất nhiều ở giai đoạn sàng lọc sơ yếu lý lịch ban đầu của bộ phận nhân sự;
-
xóa từ Junior và mức lương mong đợi khỏi sơ yếu lý lịch của bạn; chỉ cần để nó là Nhà phát triển Java và thảo luận riêng về tiền với từng công ty;
-
cố gắng để bộ phận nhân sự đặt tên là “ngã ba” của mức lương đề xuất trước khi bạn đặt tên cho những kỳ vọng của mình. Nếu một công ty đưa ra mức giá 80-120k và bạn đang tìm kiếm mức giá 40k trở lên, một số nhà tuyển chọn sẽ coi thường bạn;
-
Áp dụng cho tất cả các vị trí tuyển dụng phù hợp với nhóm của bạn, ngay cả khi chúng yêu cầu 1-3 năm kinh nghiệm thương mại.
-
Đưa vào sơ yếu lý lịch của bạn toàn bộ ngôn ngữ, công nghệ và khuôn khổ mà bạn đã làm việc cùng.
-
Đăng ký trên LinkedIn - thực sự có rất nhiều nhân viên nhân sự từ các công ty khác nhau ở đó. Điền vào hồ sơ của bạn một cách cẩn thận - trên thực tế, đây cũng là sơ yếu lý lịch của bạn. Để phát triển mạng lưới liên hệ của bạn, hãy thêm LION có liên quan đến hồ sơ của bạn; họ chấp nhận yêu cầu từ tất cả người dùng.
-
Hãy thử sức mình trong các bài kiểm tra Java miễn phí - chúng thường được đưa ra trên giấy trước cuộc phỏng vấn Junior. Tốt hơn là nên chuẩn bị trước.
-
Họ luôn hỏi về các bộ sưu tập: có những bộ sưu tập nào, chúng khác nhau như thế nào, khi nào là thời điểm tốt nhất để sử dụng chúng.
-
Luôn có trên các lớp và giao diện trừu tượng - chúng có thể có các phương thức, trường, cái nào không, chúng có thể được kế thừa không, v.v.
-
Hầu như luôn luôn sử dụng đa luồng - những gì bạn đã sử dụng trong công việc, từ khóa, phương pháp của mình, bạn có quen thuộc với util.concurrent không.
-
Thông thường khi làm việc với bộ nhớ - heap, stack và các chuỗi này có bằng nhau không, và các đối tượng này thì tại sao.
-
Đôi khi về các thuật toán - bạn biết những thuật toán nào, độ phức tạp như thế nào, tại sao, bây giờ bạn có thể viết một thuật toán được không.
-
Đôi khi dựa trên các mẫu - những mẫu bạn biết, những mẫu bạn sử dụng, viết một singleton hoặc nhà máy.
-
Đôi khi trong SQL - các loại THAM GIA, giao dịch là gì, cách thực hiện nó trong JDBC, viết một truy vấn ngắn.
-
Trang liên hệ kinh doanh hồ sơ Salesforce với việc chỉnh sửa và thêm hồ sơ mới;
-
mô phỏng thang máy trong tòa nhà nhiều tầng sử dụng Spring State Machine với bảng điều khiển;
-
Ứng dụng Android dựa trên thư viện LibGDX với đầu ra văn bản theo từng ký tự khi nhấn nút;
-
REST bắt chước việc chia sẻ ô tô, bằng cách thêm ứng dụng khách thông qua yêu cầu HTTP và trả về JSON;
-
bài toán sắp xếp đồ thị vô hướng qua một ô trống;
-
tìm kiếm các tam giác cân bằng tọa độ từ một tệp;
-
tái cấu trúc mã hoàn chỉnh bằng API Stream;
-
Máy tính giao diện người dùng có hỗ trợ biểu thức bậc ba;
-
chủng tộc của các chủ đề bằng cách ghi kết quả vào một tập tin.
-
Cố gắng không chỉ hoàn thành nhiệm vụ mà còn đảm bảo rằng mã tuân thủ các nguyên tắc OOP.
-
Kiểm tra tính hiệu quả của mã của bạn - Tôi đã từng bị từ chối vì, trong số những thứ khác, tôi đã sử dụng PrintStream thay vì BufferedWriter.
-
Lập kế hoạch thời gian thực hiện của bạn với mức chênh lệch 50% - tốt hơn là bắt đầu và kết thúc sớm hơn là thực hiện git push vào lúc 8 giờ sáng trước thời hạn.
GO TO FULL VERSION