Bài đăng

Đang hiển thị bài đăng từ Tháng 7, 2021

[Chuyện bên lề] - Tuần đầu tiên đi làm...

Vậy là mình đã chính thức trở thành một "Techcomer" được một tuần rồi. Đáng nhẽ ra là mình sẽ viết một bài về ngày đầu tiên đi làm cơ, nhưng mà mới chuyển sang môi trường mới nhiều việc phải làm quá nên đến hôm nay mình mới có thời gian để viết ra mấy dòng chia sẻ cùng mọi người. Câu đầu tiên chắc các bạn sẽ hỏi mình là "Sang bên đấy thế nào, có ổn không?" chứ gì =)) Câu trả lời của mình là "Mình ổn". Vậy chữ "ổn" ở đây là ổn những gì và có những gì mình cảm thấy chưa ổn ở môi trường mới nào... Cái ổn đầu tiên đó là môi trường làm việc. Môi trường làm việc ở Techcombank thực sự là đẹp và chuyên nghiệp. Ngày đầu tiên đi làm thì bạn phải mặc áo trắng, đóng thùng và đeo cà vạt đấy. Mình thì từ trước đến giờ chưa đeo cà vạt bao giờ nên phải đặt gấp một cái cà vạt vào cuối tuần để kịp cho hôm thứ hai đi làm. Rất may là các bạn shipper đã kịp giao hàng vào Chủ nhật để mình có ngày đầu đi làm khá suôn sẻ. Đáng nhẽ ra là mình sẽ làm ở bên Bà Triệu, nhưn...

[Interview] - Tổng hợp các câu hỏi thú vị trong lần nhảy việc đầu tiên

1. Micro-service and design pattern in micro-service https://microservices.io/patterns/microservices.html https://microservices.io/patterns/data/database-per-service.html https://microservices.io/patterns/data/saga.html https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs 2. Drawback in Hibernate https://thorben-janssen.com/common-hibernate-mistakes-cripple-performance/ 3. SQL tuning https://www.tutorialspoint.com/sql/sql-database-tuning.htm 4. Spring Data JPA https://www.baeldung.com/jpa-transient-ignore-field Handle transaction rollback 5. Optimistic and Pessimistic Locking https://hoanganhmai.blogspot.com/2019/09/optimistic-vs-pessimistic-locking.html https://stackoverflow.com/questions/40357006/spring-boot-how-to-avoid-concurrent-access-to-controller 6. How to handle request frequency access DB in spring? 7. Spring security - Role base: using @Secured, @AllowedRole - Permission base: using Spring express language 8. Java stream 9. Find repeat words in a string http...

[Chuyện bên lề] - Lần đầu nhận offer và tôi đã chọn công ty nào... - Part 3

Hình ảnh
Sau hai tuần phỏng vấn, tôi đã pass 4/5 công ty mình ứng tuyển, 1 công ty thì tôi đã từ chối phỏng vấn vòng 2 vì đã nhận offer của một trong bốn công ty rồi. Tôi rất vui vì điều này vì nó đã vượt sự mong đợi ban đầu của mình. Tuy nhiên, sau phỏng phỏng vấn, ai trong chúng ta cũng sẽ trải qua một vòng cuối cùng trước khi chuyển việc đó là chính vòng deal lương. Sau khi pass phỏng vấn, HR sẽ yêu cầu gửi payslip (bảng lương) 3 tháng gần nhất của bạn, cùng với mức lương bạn kỳ vọng ở công ty mới (cả 4 công ty mình pass họ đều yêu cầu cái này). Bảng lương hiện tại chính là căn cứ để họ đưa ra mức offer cho bạn, thông thường thì các công ty sẽ không trả cho bạn quá 20-30% so với mức lương hiện tại bạn nhận được, trừ khi họ đang rất cần người ở vị trí đó hoặc bạn quá xuất sắc... Đối với mình, việc gửi bảng lương cũng không phải là một điều gì đó quá nghiêm trọng như suy nghĩ của nhiều người. Việc phỏng vấn qua 1-2 vòng chưa thể nói hết về năng lực của một con người, do đó việc tham khảo đán...

[Chuyện bên lề] - Kinh nghiệm phỏng vấn 5 công ty IT trong vòng 2 tuần - Part 2

Hình ảnh
Hôm nay mình sẽ chia sẻ kinh nghiệm thực tế của bản thân mình trong việc đi phỏng vấn ở 5 công ty phần mềm khác nhau. Như các bạn đã biết, từ khi đi ra trường đến bây giờ, mình chỉ làm duy nhất ở 1 công ty. Trong thời gian làm việc tại Eastgate, mình cũng đã từng đi phỏng vấn 3 lần ở các công ty khác nhau. Kết quả là mình đã pass 1, và fail 2. Sau 3 lần đi phỏng vấn trước, mình đã đúc rút ra lý do tại sao mình fail nhiều đến vậy: 1. Mình đi phỏng vấn để kiểm tra năng lực hiện tại lúc đó của mình đến đâu. Và dĩ nhiên, mình sẽ chọn phỏng vấn ở những vị trí có expect cao hơn vị trí hiện tại. 2. Mình đi phỏng vấn với phong thái "chơi chơi", tức là phỏng vấn để học hỏi, mình vẫn còn happy với công việc ở công ty hiện tại. Do đó, thiếu đi sự chuẩn bị chỉn chu và cần thiết. Cứ đợi đến lịch phỏng vấn là đi phỏng vấn thôi. Và sau các lần thất bại trước đó, lần này để quyết tâm thay đổi công việc hiện tại. Mình đã xin nghỉ việc khi mình chưa đi phỏng vấn ở bất kỳ nơi nào. Có thể nói đó...

[Chuyện bên lề] - Lần đầu tiên làm chuyện ấy... "I quit" - Part 1

Hình ảnh
 Tôi đã làm ở công ty hiện tại (Eastgate Software) được 5 năm rồi. Trong thời gian đó, có thể chia ra làm 3 giai đoạn: - Giai đoạn 1: Từ 7/2016 - 7/2017: tôi làm ở EGS với vai trò là thực tập sinh iOS - Giai đoạn 2: Từ 7/2017 - 10/2018: tôi làm lập trình viên mobile (iOS, React native) - Giai đoạn 3: Từ 10/2018 - 8/2021: tôi làm lập trình viên Java Làm việc ở một công ty trong khoảng thời gian 5 năm, đã trải qua bao nhiêu thăng trầm, biến cố cùng công ty khiến tôi như cảm thấy mình đã sống và trưởng thành cùng với nó. Ở đó cho tôi rất nhiều kỷ niệm. Người ta từng bảo "tình đầu thường khó quên" và EGS là mối tình đầu trong sự nghiệp lập trình của tôi. Ở đó cho tôi một công việc tôi yêu thích, cho tôi những người đồng nghiệp tuyệt vời, những người anh luôn dìu dắt, chỉ bảo tôi từ những bước đi đầu tiên. Tôi yêu và cảm ơn họ rất nhiều... Thế nhưng cuộc vui nào rồi cũng phải đến hồi kết. Sau 5 năm ở EGS, tôi muốn tìm cho bản thân mình một cơ hội mới, một môi trường mới lớn hơn đ...

[Java] Dependency injection trong Java spring - DRAFT VERSION

[DRAFT VERSION] Dependency injection là một trong những kỹ thuật quan trọng của lập trình phần mềm. Nó giúp giảm sự rằng buộc giữa các class, giữa các module với nhau. Qua đó, giúp cho việc phát triển, mở rộng ứng dụng sau này dễ dàng hơn, giúp cho lập trình viên dễ dàng trong việc viết Unit test, Integration test sau này. Java spring ngày càng phát triển và cải tiến không ngừng để trở thành một trong những framework thịnh hành nhất trong hệ sinh thái Java và phát triển các ứng dụng Enterprise. Sau đây, mình sẽ giới thiệu cách áp dụng kỹ thuật Dependency injection trong 1 ứng dụng viết bằng Java spring. - Có 3 cách để dependency injection trong Java Spring + Sử dụng constructor + Inject trực tiếp bằng field + Sử dụng setter 1. Sử dụng @Autowired  inject 1 field 2. Sử dụng @Primary 3. Sử dụng @Quantifier 4. Dynamic autowired 5. Lazy initial 6. Sử dụng @Bean để khởi tạo các bean có implementation là các class từ bên ngoài module Ví dụ: @Bean public EmailProcessor emailProcessor() {...