kiến thức Chia sẻ lộ tình tự học đến khi có OFFER FRESHER (Java) đầu tiên

https://github.com/thanhtung0512/EmployEZ
mng đánh giá giúp e cái project này xem em có thể xin đc thực tập không ạ, cái này em vừa học spring vừa làm trong có 4 tuần, từ chưa biết gì về MVC luôn, hiện e đang học thêm về restful
code em còn cảm thấy khá là chuối ở phần phân quyền khi phải đẩy hết auth lên view để check, với cả vẫn để cả logic vào controller nữa
 
Đúng rồi fen.
Mới ra trường làm gì có doanh nghiệp nào tin tưởng giao cho fen 1 feature để fen ôm từ đầu tới cuối.
Nếu fen ôm được feature thì lúc đó đã là lương chính thức rồi.
Làm gì có chuyện trả mức thực tập cho fen khi fen code ra hàng đống feature như senior.
Nếu viết được tài liệu kĩ thuật thì fen còn giá trị hơn nữa.
Training được new member thì suất sắc luôn.
em đi intern mà làm từ đầu đến cuối 1 con app (thiếu mỗi phần deploy), bên fe bảo cần api gì thì làm cái đó
 
code em còn cảm thấy khá là chuối ở phần phân quyền khi phải đẩy hết auth lên view để check, với cả vẫn để cả logic vào controller nữa
4 tuần thì chạy được thế này cũng ổn. Nhưng nếu cần review thêm thì:

1. package name
package name không ai viết hoa cả, vd companyDAO => companydao. lỗi này lên sonarqube quét là dính issue ngay.
package name cũng hạn chế dùng underscore , nó chỉ dùng trong 2 trường hợp, 1 là package name có java keyword như int, thì phải sửa thành int, hoặc domain name có hyphen - như my-company.com thì sửa package thành com.my_company. Tất nhiên điều này không phải bắt buộc.

2. Controller
Không ai query trực tiếp sql trong controller (đây là style bên PHP hồi trước, hoặc hồi còn dùng JSP nhiều). Code phải qua ít nhất 1 level Service nữa (Controller > Service > DAO) hoặc phải 2 level (Controller > Service > Data Service > DAO)
Controller nên code rất đơn giản, tầm 4 line là đủ (gọi service call thôi)

SQL không được dùng String concatenation, nếu không sẽ bị dính SQLInjection.

Sao POST request thì không có Transactional mà GET request lại có?

Transactional ở Controller sẽ rất nguy hiểm, vì mỗi lần method được gọi thì app sẽ tạo thêm 1 connection mới đến database server. Gọi tầm 5 lần/s, khoảng 10s là server hết database connection và return error. Cái này có nhiều kiểu code, ví dụ như resilience4j. Hoặc đẩy Transaction xuống Service layer và dùng Cache (Cái này code bạn chưa có)

3. DAO
DAO giờ dùng JPA cho nhanh, bạn không phải code nhiều SQL. Bạn mix cả 2 loại đọc khá khó.

Nên dùng Mapstruct để chuyển đổi object giữa DTO, Domain với Entity. Bạn sẽ không phải gọi .setxxx() nhiều.

4. Test
Thiếu Unit Test, Integration Test

Tạm thời thế đã :LOL:

Repo với code java khá chuẩn thì mình thấy có bạn Đấng Tối Cao :LOL: .
 
4 tuần thì chạy được thế này cũng ổn. Nhưng nếu cần review thêm thì:

1. package name
package name không ai viết hoa cả, vd companyDAO => companydao. lỗi này lên sonarqube quét là dính issue ngay.
package name cũng hạn chế dùng underscore , nó chỉ dùng trong 2 trường hợp, 1 là package name có java keyword như int, thì phải sửa thành int, hoặc domain name có hyphen - như my-company.com thì sửa package thành com.my_company. Tất nhiên điều này không phải bắt buộc.

2. Controller
Không ai query trực tiếp sql trong controller (đây là style bên PHP hồi trước, hoặc hồi còn dùng JSP nhiều). Code phải qua ít nhất 1 level Service nữa (Controller > Service > DAO) hoặc phải 2 level (Controller > Service > Data Service > DAO)
Controller nên code rất đơn giản, tầm 4 line là đủ (gọi service call thôi)

SQL không được dùng String concatenation, nếu không sẽ bị dính SQLInjection.

Sao POST request thì không có Transactional mà GET request lại có?

Transactional ở Controller sẽ rất nguy hiểm, vì mỗi lần method được gọi thì app sẽ tạo thêm 1 connection mới đến database server. Gọi tầm 5 lần/s, khoảng 10s là server hết database connection và return error. Cái này có nhiều kiểu code, ví dụ như resilience4j. Hoặc đẩy Transaction xuống Service layer và dùng Cache (Cái này code bạn chưa có)

3. DAO
DAO giờ dùng JPA cho nhanh, bạn không phải code nhiều SQL. Bạn mix cả 2 loại đọc khá khó.

Nên dùng Mapstruct để chuyển đổi object giữa DTO, Domain với Entity. Bạn sẽ không phải gọi .setxxx() nhiều.

4. Test
Thiếu Unit Test, Integration Test

Tạm thời thế đã :LOL:

Repo với code java khá chuẩn thì mình thấy có bạn Đấng Tối Cao :LOL: .
em cảm ơn bác ạ, cái đoạn transactional đặt trong controller em học trên udemy mấy ống toàn dạy nhưu thế, h em mới biết nó sai
 
em cảm ơn bác ạ, cái đoạn transactional đặt trong controller em học trên udemy mấy ống toàn dạy nhưu thế, h em mới biết nó sai
Chắc sẽ có khoá nâng cao hơn để sửa mấy lỗi design này :LOL: .
Mình đoán lí do là vì bạn run SQL ngay trong Controller (kiểu mì ăn liền), nên cần Transactional. Chuyển SQL xuống Service Layer thì không cần Transactional ở Controller nữa, mà để ở Service Layer. :LOL:
 
Chắc sẽ có khoá nâng cao hơn để sửa mấy lỗi design này :LOL: .
Mình đoán lí do là vì bạn run SQL ngay trong Controller (kiểu mì ăn liền), nên cần Transactional. Chuyển SQL xuống Service Layer thì không cần Transactional ở Controller nữa, mà để ở Service Layer. :LOL:
chuẩn luôn ạ, đoạn đấy em code 1 mình mà deadline dí gần chết nên chỉ cần chạy đc là đc để còn demo với cô giáo nên kh quan tâm đến mấy cái design, giờ ngồi đọc lại chuối không tả được
 
tại em học IT hệ Việt Nhật :(( nên cái tiếng Nhật nó hơi ngốn nhiều thời gian quá bác. Em muốn hỏi để nên ưu tiên cái nào trước ạ
Tui học Tiếng Nhật nè fen! Khoai phết đó! Fen xin mấy tài liệu từ vựng IT Tiếng Nhật mà cày cho nhanh, vừa bổ sung về It mà sau này dùng thường xuyên fen ạ! Tui N2 rùi nhưng chán thị trường Nhật quá giờ sang Úc rùi!
 
Các bác cho mình hỏi làm web thì backend Java nên xài front end nào ạ?

Mình thấy nhiều ngườii khuyên dùng React, Angular nhưng mình lại khá là ngán những cái gì liên quan đến JS.
 
Các bác cho mình hỏi làm web thì backend Java nên xài front end nào ạ?

Mình thấy nhiều ngườii khuyên dùng React, Angular nhưng mình lại khá là ngán những cái gì liên quan đến JS.
Không JS thì fen có thể code mỗi HTML + CSS mà ko có responsive :LOL: . Nói chung không né được đâu phải học JS thôi. Framework nào cũng được vì bản chất của nó là gửi HTTP thôi. Muốn cho mau thì có thể dùng thymeleaf.
 
Fresher dạo này ở HCM mình thấy tuyển C#, Java phần nhiều. NodeJS hiếm lắm mới thấy một cái, chưa kể thằng reactJS mà tuyển là tỉ lệ chọi siêu cao. Công ty bữa mình đi pv 40 thằng, 5 ông java hết mẹ 35 ông react :burn_joss_stick:
vãi, 5 ông java mà 35 ông react thật hả ông? :LOL:))))
 
chính xác ạ :D. Lên web check khóa học đắt vk l
trước có học ông này dạy khóa free servlet thấy cx ok nên tui có mua khóa học qua video của ông javaweb này học thử. Kiến thức thì chẳng học được nhiều mà nghe nói chuyện khác thì nhiều. Hình như ổng dạy chính là cung cấp mấy video lý thuyết mà khóa qua video thì k có mấy video đó. Làm cuối cùng cx tự mò lên youtube kiếm mấy kênh như Amigoscode hay Daily code buffer để học
 
Đúng rồi bác, dân tay ngang, chuyển ngành toàn đâm đầu react học nhiều mà
h né react ra, không phải dân trái hay tay ngang đá sang, mà cả bọn dh của các trường đá sang nữa, mình hồi đó theo java, vô công ty bắt làm react/next tận 2 năm, h ra phải học lại java để theo fullStack cho đỡ bớt cạnh tranh lằng nhằng.
 
Review phỏng vấn Bosch Intern Java vừa ngay tại trường sáng nay :ah::ah::
  • OOP:
    1. Nêu các tính chất OOP, tại sao phải sử dụng OOP ?
    2. Phân biệt Overide, Overloading, trường hợp xuất hiện dùng chúng
    3. Phân biệt Interface, Abstract class. Khi nào dùng cái nào
  • Spring Boot:
    1. Nêu các anotation mà em biết
    2. Giải thích các anotation Controller, Service, Autowire
    3. Giải thích hoạt động DI, các cách DI
    4. Các annotation của Spring MVC để xác định cách lấy dữ liệu từ yêu cầu HTTP
    5. Các mapping mà em biết.
    6. Cho một request url vd. Giải thích cách @PathVariable lấy phần path vào agrument
    7. Giải thích Repository, nêu đặc điểm Spring data JPA, tại sao lại dùng JPA, Cách JPA hoạt động
    8. Em dùng gì để trả về phản hồi HTTP dưới dạng đối tượng
  • Java core:
    1. Giải thích Stack, Queue
    2. So sánh ArrayList vs LinkedList, mô tả hình giải thích hoạt động của cà 2, ưu nhượt điểm và trường hợp sử dụng
    3. int với Integer, ưu nhược điểm và trường hợp sử dụng
    4. so sánh Set vs Map
  • Project cá nhân:
    1. Em chọn ra cái ưng nhất và để anh hỏi về nó
    2. Vẽ sơ đồ luồng hoạt động phân quyền của ứng dụng.
    3. Giải thích về cách ứng dụng em xác định quyền, cách duy trì đăng nhập của ứng dụng em và khi hết session sẽ thế nào.
    4. Cách thiết kế class cho ứng dụng
    5. Em dùng AWS làm gì cho ứng dụng mình.
Lúc đầu buổi ảnh hỏi vấn đáp tiếng Anh không thì mình ok luôn nên 3/4 phần trên sẽ vấnđáp tiếng anh,đoạn nào có nhiều từ chuyên môn thi cho vấn đáp tiếng Việt. Mình thì lần đầu pv bằng tiếng Anh nên toàn nói bập bẽ kiểu ghép từ vựng.

Nhìn chung hỏi khá nhiều nhưng không sâu. Đánh giá chung thì khá cơ bản và dễ nếu ôn bài đầy đủ với những gì thớt đã nêu trên. Riêng mình thì chỉ lo ôn OOP vs 1 chút Java Core nên còn nhiều câu trả lời khá fail, nhắm bản thân trả lời được 60-70%, đặc biệt là mấy cái Project toàn làm hơn 6 tháng trước nên giờ chả nhớ gì toàn nói lung tung :beat_brick::beat_brick:.

Cuối buổi có nhờ ảnh đánh giá thì nói với mức độ intern thì kiến thức cơ bản khá ổn và đủ, tiếng anh thì nói người nghe vẫn có khả năng hiểu.
"Nhìn chung là ổn, với sv cuối năm 3 còn phải học trên trường thì hiện em phù hợp với chương trình bootcamp cho Intern, nếu có gì thì nhân sự sẽ liên hệ em" -Không biết ảnh nói động viên cho vui hay tin tích cực :amazed::amazed:.
 
Last edited:
Review phỏng vấn Bosch Intern Java vừa ngay tại trường sáng nay :ah::ah::
  • OOP:
    1. Nêu các tính chất OOP, tại sao phải sử dụng OOP ?
    2. Phân biệt Overide, Overloading, trường hợp xuất hiện dùng chúng
    3. Phân biệt Interface, Abstract class. Khi nào dùng cái nào
  • Spring Boot:
    1. Nêu các anotation mà em biết
    2. Giải thích các anotation Controller, Service, Autowire
    3. Giải thích hoạt động DI, các cách DI
    4. Các annotation của Spring MVC để xác định cách lấy dữ liệu từ yêu cầu HTTP
    5. Các mapping mà em biết.
    6. Cho một request url. Giải thích cách @PathVariable lấy phần path vào agrument
    7. Giải thích Repository, nêu đặc điểm Spring data JPA, tại sao lại dùng JPA, Cách JPA hoạt động
    8. Em dùng gì để trả về phản hồi HTTP dưới dạng đối tượng
  • Java core:
    1. Giải thích Stack, Queue
    2. So sánh ArrayList vs LinkedList, mô tả hình giải thích hoạt động của cà 2, ưu nhượt điểm và trường hợp sử dụng
    3. int với Integer, ưu nhược điểm và trường hợp sử dụng
    4. so sánh Set vs Map
  • Project cá nhân:
    1. Em chọn ra cái ưng nhất và để anh hỏi về nó
    2. Vẽ sơ đồ luồng hoạt động phân quyền của ứng dụng.
    3. Giải thích về cách ứng dụng em xác định quyền, cách duy trì đăng nhập của ứng dụng em và khi hết session sẽ thế nào.
    4. Cách thiết kế class cho ứng dụng
    5. Em dùng AWS làm gì cho ứng dụng mình.
Lúc đầu buổi ảnh hỏi vấn đáp tiếng Anh không thì mình ok luôn nên 3/4 phần trên sẽ vấnđáp tiếng anh,đoạn nào có nhiều từ chuyên môn thi cho vấn đáp tiếng Việt. Mình thì lần đầu pv bằng tiếng Anh nên toàn nói bập bẽ kiểu ghép từ vựng.

Nhìn chung hỏi khá nhiều nhưng không sâu. Đánh giá chung thì khá cơ bản và dễ nếu ôn bài đầy đủ với những gì thớt đã nêu trên. Riêng mình thì chỉ lo ôn OOP vs 1 chút Java Core nên còn nhiều câu trả lời khá fail, nhắm bản thân trả lời được 60-70%, đặc biệt là mấy cái Project toàn làm hơn 6 tháng trước nên giờ chả nhớ gì toàn nói lung tung :beat_brick::beat_brick:.

Cuối buổi có nhờ ảnh đánh giá thì nói với mức độ intern thì kiến thức cơ bản khá ổn và đủ, tiếng anh thì nói người nghe vẫn có khả năng hiểu.
"Nhìn chung là ổn, phù hợp bootcap, nếu có gì thì nhân sự sẽ liên hệ" -Không biết ảnh nói động viên hay tin tích cực :amazed::amazed:.
Rồi bác pv intern hay fresher mà phán hợp với intern? phù hợp bootcap là gì?
 
Rồi bác pv intern hay fresher mà phán hợp với intern? phù hợp bootcap là gì?
Lúc đầu mình chỉ nói HR là pv vị trí Java Developer. Tại họ vừa tuyển fresher vs intern, vào pv họ sẽ đánh giá và gợi ý vị trí phù hợp. Còn bootcap mình sai chính tả để mình sửa lại :big_smile:
 
Review phỏng vấn Bosch Intern Java vừa ngay tại trường sáng nay :ah::ah::
  • OOP:
    1. Nêu các tính chất OOP, tại sao phải sử dụng OOP ?
    2. Phân biệt Overide, Overloading, trường hợp xuất hiện dùng chúng
    3. Phân biệt Interface, Abstract class. Khi nào dùng cái nào
  • Spring Boot:
    1. Nêu các anotation mà em biết
    2. Giải thích các anotation Controller, Service, Autowire
    3. Giải thích hoạt động DI, các cách DI
    4. Các annotation của Spring MVC để xác định cách lấy dữ liệu từ yêu cầu HTTP
    5. Các mapping mà em biết.
    6. Cho một request url vd. Giải thích cách @PathVariable lấy phần path vào agrument
    7. Giải thích Repository, nêu đặc điểm Spring data JPA, tại sao lại dùng JPA, Cách JPA hoạt động
    8. Em dùng gì để trả về phản hồi HTTP dưới dạng đối tượng
  • Java core:
    1. Giải thích Stack, Queue
    2. So sánh ArrayList vs LinkedList, mô tả hình giải thích hoạt động của cà 2, ưu nhượt điểm và trường hợp sử dụng
    3. int với Integer, ưu nhược điểm và trường hợp sử dụng
    4. so sánh Set vs Map
  • Project cá nhân:
    1. Em chọn ra cái ưng nhất và để anh hỏi về nó
    2. Vẽ sơ đồ luồng hoạt động phân quyền của ứng dụng.
    3. Giải thích về cách ứng dụng em xác định quyền, cách duy trì đăng nhập của ứng dụng em và khi hết session sẽ thế nào.
    4. Cách thiết kế class cho ứng dụng
    5. Em dùng AWS làm gì cho ứng dụng mình.
Lúc đầu buổi ảnh hỏi vấn đáp tiếng Anh không thì mình ok luôn nên 3/4 phần trên sẽ vấnđáp tiếng anh,đoạn nào có nhiều từ chuyên môn thi cho vấn đáp tiếng Việt. Mình thì lần đầu pv bằng tiếng Anh nên toàn nói bập bẽ kiểu ghép từ vựng.

Nhìn chung hỏi khá nhiều nhưng không sâu. Đánh giá chung thì khá cơ bản và dễ nếu ôn bài đầy đủ với những gì thớt đã nêu trên. Riêng mình thì chỉ lo ôn OOP vs 1 chút Java Core nên còn nhiều câu trả lời khá fail, nhắm bản thân trả lời được 60-70%, đặc biệt là mấy cái Project toàn làm hơn 6 tháng trước nên giờ chả nhớ gì toàn nói lung tung :beat_brick::beat_brick:.

Cuối buổi có nhờ ảnh đánh giá thì nói với mức độ intern thì kiến thức cơ bản khá ổn và đủ, tiếng anh thì nói người nghe vẫn có khả năng hiểu.
"Nhìn chung là ổn, với sv cuối năm 3 còn phải học trên trường thì hiện em phù hợp với chương trình bootcamp cho Intern, nếu có gì thì nhân sự sẽ liên hệ em" -Không biết ảnh nói động viên cho vui hay tin tích cực :amazed::amazed:.
pv intern mà căng dữ z, đúng là bosch có khác
 
Review phỏng vấn Bosch Intern Java vừa ngay tại trường sáng nay :ah::ah::
  • OOP:
    1. Nêu các tính chất OOP, tại sao phải sử dụng OOP ?
    2. Phân biệt Overide, Overloading, trường hợp xuất hiện dùng chúng
    3. Phân biệt Interface, Abstract class. Khi nào dùng cái nào
  • Spring Boot:
    1. Nêu các anotation mà em biết
    2. Giải thích các anotation Controller, Service, Autowire
    3. Giải thích hoạt động DI, các cách DI
    4. Các annotation của Spring MVC để xác định cách lấy dữ liệu từ yêu cầu HTTP
    5. Các mapping mà em biết.
    6. Cho một request url vd. Giải thích cách @PathVariable lấy phần path vào agrument
    7. Giải thích Repository, nêu đặc điểm Spring data JPA, tại sao lại dùng JPA, Cách JPA hoạt động
    8. Em dùng gì để trả về phản hồi HTTP dưới dạng đối tượng
  • Java core:
    1. Giải thích Stack, Queue
    2. So sánh ArrayList vs LinkedList, mô tả hình giải thích hoạt động của cà 2, ưu nhượt điểm và trường hợp sử dụng
    3. int với Integer, ưu nhược điểm và trường hợp sử dụng
    4. so sánh Set vs Map
  • Project cá nhân:
    1. Em chọn ra cái ưng nhất và để anh hỏi về nó
    2. Vẽ sơ đồ luồng hoạt động phân quyền của ứng dụng.
    3. Giải thích về cách ứng dụng em xác định quyền, cách duy trì đăng nhập của ứng dụng em và khi hết session sẽ thế nào.
    4. Cách thiết kế class cho ứng dụng
    5. Em dùng AWS làm gì cho ứng dụng mình.
Lúc đầu buổi ảnh hỏi vấn đáp tiếng Anh không thì mình ok luôn nên 3/4 phần trên sẽ vấnđáp tiếng anh,đoạn nào có nhiều từ chuyên môn thi cho vấn đáp tiếng Việt. Mình thì lần đầu pv bằng tiếng Anh nên toàn nói bập bẽ kiểu ghép từ vựng.

Nhìn chung hỏi khá nhiều nhưng không sâu. Đánh giá chung thì khá cơ bản và dễ nếu ôn bài đầy đủ với những gì thớt đã nêu trên. Riêng mình thì chỉ lo ôn OOP vs 1 chút Java Core nên còn nhiều câu trả lời khá fail, nhắm bản thân trả lời được 60-70%, đặc biệt là mấy cái Project toàn làm hơn 6 tháng trước nên giờ chả nhớ gì toàn nói lung tung :beat_brick::beat_brick:.

Cuối buổi có nhờ ảnh đánh giá thì nói với mức độ intern thì kiến thức cơ bản khá ổn và đủ, tiếng anh thì nói người nghe vẫn có khả năng hiểu.
"Nhìn chung là ổn, với sv cuối năm 3 còn phải học trên trường thì hiện em phù hợp với chương trình bootcamp cho Intern, nếu có gì thì nhân sự sẽ liên hệ em" -Không biết ảnh nói động viên cho vui hay tin tích cực :amazed::amazed:.
hust inovation day à :shame:. Không biết bên này intern lương bn nhể
 
Back
Top