Bài viết được sự cho phép của tác giả Tống Xuân Hoài
Vấn đề
npm là trình quản lý gói được tích hợp vào bộ cài Node.js đã từ rất lâu. Hầu hết chúng ta đều sử dụng npm để tải về các gói có trên npm registry, hoặc mỗi khi cần cài đặt lại toàn bộ các gói phụ thuộc sử dụng trong dự án. npm có những cơ chế bảo mật cao như quyền truy cập vào các gói riêng tư (private), cơ chế xác thực và xác minh hai lớp…
Tiện lợi là thế nhưng npm cũng có một số hạn chế như tốc độ cài đặt gói chậm, tạo ra node_modules có dung lượng tương đương với hố đen vũ trụ… kèm theo một bộ cấu hình phức tạp. Chính vì thế nhiều trình quản lý gói khác ra đời nhằm khắc phục những điểm yếu đó, đơn cử như Yarn hoặc pnpm.
Trong khi yarn nổi tiếng với tốc độ cài đặt gói thì pnpm lại có cơ chế làm giảm dung lượng của node_modules thông qua việc chia sẻ thư mục. Giờ đây chúng ta không nhất thiết phải sử dụng npm theo mặc định nữa, mà có thể lựa chọn các trình quản lý khác theo sở thích hoặc nhu cầu của dự án.
Một tin vui nữa là kể từ Node.js 14, chúng ta không cần phải cài đặt yarn hoặc pnpm một cách thủ công nữa mà nó đã được tích hợp sẵn vào trong Node.js với cờ thử nghiệm (Stability: 1) với tên gọi Corepack. Có thể sẽ mất thêm một thời gian nữa thì Corepack mới được gán cờ ổn định, nhưng ngay bây giờ hãy cùng tôi tìm hiểu xem Corepack là gì và sử dụng nó như thế nào nhé.
Corepack hiện đang là một công cụ thử nghiệm giúp quản lý các trình quản lý gói. Nó đóng vai trò như là một proxy. Khi được gọi, nó sẽ xác định xem trình quản lý gói nào được định cấu hình cho dự án hiện tại, cài đặt nếu chưa có và cuối cùng chạy nó. Tất cả những gì người dùng thấy là kết quả như đang tương tác với trình quản lý gói trực tiếp.
Cốt lõi của Corepack là:
Không cần thiết phải cài đặt thủ công trình quản lý gói từ những công cụ cài đặt bên ngoài nữa.
Đảm bảo rằng mọi người trong nhóm sẽ sử dụng chính xác phiên bản trình quản lý gói thông qua thiết lập trong “package.json”.
Do đang là thử nghiệm, Corepack cần được kích hoạt thông qua lệnh corepack enable, chỉ cần nhập vào terminal:
$ corepack enable
Ngay lập tức Corepack sẽ được kích hoạt, bạn có thể kiểm tra version của yarn hay pnpm ngay lúc này:
$ yarn --version
1.22.19
$ pnpm --version
8.5.1
Hiện tại, Corepack chỉ hỗ trợ hai trình quản lý gói là yarn và pnpm. Nếu không muốn sử dụng nữa, chỉ cần chạy lệnh corepack disable.
$ corepack disable
Để xác định trình quản lý gói được sử dụng trong dự án, bạn có thể thiết lập nó thông qua thuộc tính “packageManager” có trong package.json. Mở package.json ra và kiểm tra xem có thuộc tính packageManager chưa, nếu chưa thì hãy thêm vào:
{
...
"packageManager":"yarn",
...
}
Hành động này đồng nghĩa với việc bạn cấu hình yarn làm trình quản lý gói mặc định, nếu cố tình sử dụng pnpm trong dự án để cài đặt hoặc làm bất cứ điều gì đi nữa thì một thông báo lỗi sẽ bật ra màn hình yêu cầu phải sử dụng yarn.
Điều này ngoại lệ với npm, nghĩa là bạn vẫn có thể sử dụng lệnh npm trong khi “packageManager” đang được thiết lập là yarn hoặc pnpm.
Tổng kết
npm là trình quản lý gói được tích hợp sẵn trong Node.js. Mặc dù là công cụ mạnh mẽ nhưng npm trong tránh khỏi những thiết sót. Lý do đó khiến Corepack ra đời mang theo hai trình quản lý gói là yarn và pnpm. Giờ đây không cần phải cài đặt thủ công trình quản lý gói yêu thích nữa mà có thể sử dụng nó ngay trong Node.js.
Cách tìm ứng viên trên LinkedIn như thế nào hiệu quả nhất? LinkedIn là một nền tảng thông minh với nhiều tính năng nổi bật. Ngày càng nhiều xu hướng và thông tin tuyển dụng được cập nhật; truyền tải trên LinkedIn đã tạo ra sự tương tác lớn giữa ứng viên và nhà tuyển dụng. Cùng TopDev tìm hiểu về những bí kíp giúp khai thác và tuyển dụng trên LinkedIn hiệu quả nhất nhé.
Bên cạnh việc đặt ra những target cụ thể; đối tượng hướng đến rõ ràng, nhà tuyển dụng cần có những kinh nghiệm trong việc tận dụng nguồn tài nguyên LinkedIn; nhằm gia tăng hiệu suất cho công tác tuyển dụng ứng viên cho các vị trí phù hợp.
Vì sao HR nên tuyển dụng nhân sự trên LinkedIn?
LinkedIn đã trở thành một trong những mạng xã hội chuyên nghiệp hàng đầu thế giới, kết nối hàng triệu nhà quản lý, chuyên gia và nhân viên từ khắp nơi trên thế giới. Việc sử dụng LinkedIn trong quá trình tuyển dụng mang lại nhiều lợi ích cho các chuyên viên nhân sự (HR).
Dưới đây là một số lý do vì sao HR nên sử dụng LinkedIn để tuyển dụng:
Quy mô mạng lưới chuyên nghiệp: LinkedIn là mạng xã hội với mạng lưới kết nối rộng lớn và chuyên nghiệp, giúp HR mở rộng mối quan hệ với ứng viên tiềm năng, nhà quản lý và chuyên gia trong lĩnh vực. Điều này giúp tạo ra một nguồn cung ứng ứng viên chất lượng và đa dạng.
Tiếp cận nguồn ứng viên chất lượng: LinkedIn cho phép HR tiếp cận một đối tượng ứng viên đa dạng và chất lượng, bao gồm cả những người đang làm việc tại các công ty, freelancer và người tìm kiếm việc làm mới.
Cung cấp thông tin chi tiết về ứng viên: Hồ sơ LinkedIn của ứng viên thường cung cấp thông tin chi tiết về họ, bao gồm học vấn, kinh nghiệm làm việc, kỹ năng, dự án đã tham gia và các hoạt động xã hội. Điều này giúp HR có cái nhìn toàn diện về ứng viên trước khi quyết định tiến tới giai đoạn phỏng vấn.
Quảng cáo việc làm: LinkedIn cung cấp nền tảng quảng cáo việc làm, cho phép HR đưa thông tin về các vị trí tuyển dụng trực tiếp đến những ứng viên có kỹ năng phù hợp.
Cách tìm ứng viên trên LinkedIn hiệu quả cho HR
1. Checklist các ứng viên tiềm năng về công ty mà họ đang làm hoặc đã làm
Có rất nhiều cách mà bạn có thể khai thác như hỏi Hiring Manager; hay xem lại profile/portfolio của những bạn đã đảm nhận vị trí tương tự. Ngoài ra, bạn có thể lên các trang job tìm việc làm (nền tảng job board) để tra cứu về các kỹ năng tương ứng với skill mình đang ứng tuyển.
Tìm việc trên Linkedin
Việc xem xét như vậy có thể giúp bạn khai thác thêm về sở thích, tính cách, mối quan hệ và tầm ảnh hưởng hay những đánh giá về chuyên môn về ứng viên đó. Và biết đâu bạn sẽ biết được những mong muốn của họ cho từng vị trí tương ứng; lý do nào họ rời bỏ doanh nghiệp hiện tại và chấp nhận bắt đầu lại,… Điều này rất quan trọng đấy! Vì giúp nhà tuyển dụng có cái nhìn chính xác hơn về các ứng viên.
Ví dụ, bạn đang muốn tuyển dụng IT. Cụ thể, đó là vị trí lập trình về iOS Developer có kinh nghiệm triển khai, thực hiện các sản phẩm hướng đến số lượng người dùng lớn (khoảng 1 triệu users), bạn có thể tiến hành các bước như sau:
Tìm hiểu xem đâu là sản phẩm mobile app mà có nhiều người dùng? Việc này không quá khó nếu bạn hay dùng app mobile; và chịu suy nghĩ một chút. Bạn nên liệt kê ra hết các app bạn biết. Đồng thời đi hỏi thêm những bạn làm về lập trình trong công ty.
Đồng thời, từ việc tìm tên app, bạn có thể tìm hiểu thêm về tên công ty. Đây là một điểm thuận lợi giúp tối ưu hóa thông tin ứng viên. Vì có rất nhiều trường hợp trên profile ứng viên không để tên app mà chỉ để tên công ty sở hữu app đó.
3. Liên kết từ khóa và kết nối ứng viên
Tìm việc trên linkedin
Khi đã tìm hiểu về tên công ty, tên những sản phẩm (tức là source); mà ở đó có thể có những ứng viên mình cần tìm thì việc tiếp theo cần làm là search theo các từ khóa và bắt đầu tiến hành kết nối. Có thể thực hiện theo trình tự sau:
1. Viết đoạn mô tả ngắn để giới thiệu về doanh nghiệp và mục đích kết nối ứng viên, đó là bước đầu gây được thiện cảm.
2. Chú trọng đến thời điểm kết nối ứng viên. Cụ thể thời điểm “vàng” tạo ra hiệu quả kết nối với các bạn làm IT là từ 10PM trở đi.
3. Tạo sự thu hút bằng visual hình ảnh. Đánh vào các Recruiter là nữ thì việc lựa chọn những avatar trẻ trung, dễ thương là điều cần thiết.
4. Đăng tin tuyển dụng trong các group trên LinkedIn
Đăng tin tuyển dụng lên các nhóm trên LinkedIn là một cách hiệu quả để tìm kiếm và tiếp cận các ứng viên có kỹ năng phù hợp trong cộng đồng chuyên ngành. Dưới đây là một số cách tìm ứng viên trên LinkedIn thành công:
Xác định những nhóm liên quan: Tìm các nhóm LinkedIn liên quan đến lĩnh vực công việc, ngành nghề, hoặc vị trí tuyển dụng mà bạn đang quan tâm. Hãy chọn những nhóm có số lượng thành viên lớn và hoạt động tích cực để tăng khả năng đạt đến nhiều người.
Tham gia và tương tác: Trước khi đăng tin tuyển dụng, hãy tham gia vào những cuộc thảo luận trong nhóm. Chia sẻ kiến thức, bình luận và tương tác với các thành viên khác để xây dựng tên tuổi và uy tín trong cộng đồng.
Tạo nội dung hấp dẫn: Trước khi đăng tin, hãy chắc chắn bạn đã chuẩn bị nội dung tuyển dụng thú vị và hấp dẫn. Điều này bao gồm mô tả vị trí công việc, yêu cầu, quyền lợi và các thông tin khác mà ứng viên quan tâm.
Sử dụng hình ảnh và định dạng hấp dẫn: Để tin tuyển dụng nổi bật, hãy sử dụng hình ảnh và định dạng văn bản hấp dẫn. Một hình ảnh ấn tượng và một định dạng dễ đọc sẽ thu hút sự chú ý.
Chọn thời điểm đăng: Nghiên cứu và tìm hiểu thời điểm mà những thành viên tích cực nhất trong nhóm thường hoạt động trên LinkedIn.
Hỗ trợ và tương tác: Khi có ứng viên quan tâm hoặc đặt câu hỏi về tin tuyển dụng của bạn, hãy hồi đáp nhanh chóng và chuyên nghiệp. Điều này thể hiện tính tận tâm và quan tâm của bạn đối với ứng viên.
5. Cách tìm ứng viên trên LinkedIn bằng hình thức trả phí
Cách thức này thường được áp dụng bởi các doanh nghiệp có quy mô lớn hoặc ngân sách tuyển dụng cao. Sự khác biệt giữa tài khoản trả phí và tài khoản miễn phí trên LinkedIn nằm ở chức năng InMail. Trong trường hợp sử dụng tài khoản miễn phí, bạn sẽ phải dựa vào các mối quan hệ chung nếu muốn tiếp cận ứng viên nằm ngoài mạng lưới kết nối của mình.
Tuy nhiên, khi bạn sử dụng tài khoản trả phí trên LinkedIn, bạn có khả năng tương tác trực tiếp với họ qua chức năng InMail. LinkedIn cung cấp hai loại tài khoản trả phí: Tài khoản Premium và Tài khoản Recruiter.
Phải làm gì khi gặp phải vấn đề Limited (bị giới hạn tìm kiếm) trên LinkedIn?
Khi tuyển dụng trên LinkedIn không tránh khỏi những vấn đề phát sinh ngoài ý muốn. Giới hạn tìm kiếm là một vấn đề nhiều HR thường gặp nhất. Vấn đề này do việc kết nối/search quá nhiều sẽ bị LinkedIn giới hạn phạm vi tìm kiếm. Đừng quá lo lắng, hãy giải quyết bằng những cách thức như sau:
Bạn có thể linh động và tạo nhiều hơn 1 profile trên LinkedIn. Tất nhiên, bạn cần dành thời gian hoạt động (nuôi dưỡng tài khoản). Khi gặp phải trường hợp bị giới hạn, bạn có thể chuyển sang các tài khoản khác. Đồng thời, copy thông tin truy cập ứng viên để tiếp tục xem contact.
Tạo thêm profile “fake” cũng được xem là một thủ thuật hoàn hảo vì có nhiều bạn chấp nhận lời mời LinkedIn bằng cách xem “Title”/Công việc của bạn.
Chẳng hạn, những bạn làm Digital Marketing bắt gặp một bạn có title là Digital Marketing Manager gửi contact cho mình thì khả năng bạn accept sẽ cao hơn khi thấy người gửi là HR/Recruiter. Mọi việc đều mang tính chất tương đối và vì thế, bạn cần cân nhắc thêm tình trạng này.
Giải pháp 2 – Dùng Profile Premium
Một cách tìm ứng viên trên LinkedIn khác bạn có thể tham khảo là dùng Profile Premium Bạn sẽ được sử dụng Profile Premium free 1 tháng đầu nếu chấp nhận các điều khoản và thao tác cực kỳ đơn giản chỉ cần bạn có thẻ tín dụng. Trong tuần đầu tiên, khi còn được dùng miễn phí, bạn hãy tận dụng để mở rộng số lượng network đến mức tối đa.
Đặc biệt, sau thời gian dài tốn phí, LinkedIn sẽ cho bạn dùng free tài tài khoản premium 1 lần vì thế bạn nên kích hoạt lại. Chính sách này là có thể thay đổi tùy vào thời điểm.
Giải pháp 3 – Tận dụng sự hỗ trợ khai thác từ bên ngoài
Ở thời điểm hiện tại, nhiều nhân sự IT đang không có đủ thời gian cũng như nguồn lực để tập trung phát triển trên LinkedIn được; cũng như sử dụng nhiều nguồn lưc hơn cho các kênh tuyển khác tích hợp nhanh hơn như Facebook, Email,… Đặc biệt là với các vị trí yêu cầu mức kinh nghiệm cao không thể đơn thuần chỉ lấy CV từ Facebook được nữa. Vì thế nhân sự IT cũng nên tìm kiếm một đơn vị tuyển dụng thứ 3 để hỗ trợ; lên một chiến lược “săn người trên LinkedIn” hiệu quả chặt chẽ hơn tuỳ theo đặc thù doanh nghiệp.
Để có thể hỗ trợ toàn diện và mang về nguồn CV chất lượng nhất cho nhà tuyển dụng IT, TopDev cho ra mắt hệ tuyển dụng tích hợp vừa tìm kiếm vừa sàng lọc ứng viên đa kênh. Doanh nghiệp sẽ không chỉ nhận được 1 – mà là 2 nguồn CV chất lượng cao được sàng lọc trước cho doanh nghiệp; đảm bảo đầu vào cho cả các vị trí Senior yêu cầu kinh nghiệm cao cả nguồn từ LinkedIn. Từ đó giúp nhà tuyển dụng nhanh chóng đạt chỉ tiêu tuyển dụng của mình và tìm được “người đồng hành” phù hợp.
Cách tìm ứng viên trên LinkedIn thành công hãy chịu khó tương tác hàng ngày trên vì bản chất đây là một mạng xã hội, bạn càng xuất hiện với những bài đăng chất lượng, đầu tư về mặt hình ảnh và nội dung thì chắc chắn post của bạn sẽ được react.
tìm việc trên linkedin
Không chỉ đơn thuần là một người chia sẻ, bạn hãy chủ động tương tác và bình luận; bày tỏ quan điểm một cách logic, khoa học về những thông tin, kiến thức của mình. Những comment có thể sẽ là sợi dây kết nối mạnh nhất. Có thể nó sẽ tạo ra sự đồng cảm, cũng có làm bùng nổ những tranh luận. Tuy vậy, mọi thứ đều hướng đến mục đích chung là tạo ra sự tương tác. Những công tác như lý giải sẽ có hiệu lực nếu tính tương tác và khả năng kết nối tốt. Khi tương tác tốt, bạn sẽ khoanh vùng được đâu là những ứng viên thật sự tiềm năng.
Nếu đã thành công trong việc kết nối ứng viên, đừng ngại ngần mà hãy chủ động trò chuyện. Một vài lời nhắn đầu tiên rất quan trọng, vì nó sẽ giúp việc gửi contact các vị trí ứng tuyển cho ứng viên một cách dễ dàng hơn.
Lời kết
Với độ kiểm soát và bảo mật chặt chẽ, LinkedIn thật sự là một nền tảng tốt dành cho công tác tuyển dụng trên. Nếu người dùng đảm bảo tuân thủ tốt những nguyên tắc; không vi phạm các tiêu chuẩn cộng đồng thì bạn có thể an tâm khi LinkedIn hoàn toàn hiệu quả trong việc đáp ứng nhu cầu tìm kiếm nguồn ứng viên trẻ; tiềm năng và phù hợp với từng vị trí trong doanh nghiệp. Hy vọng bài viết trên đã giúp bạn biết cách tìm ứng viên trên LinkedIn hiệu quả.
Tuyển Dụng Nhân Tài IT Cùng TopDev Đăng ký nhận ưu đãi & tư vấn về các giải pháp Tuyển dụng IT & Xây dựng Thương hiệu tuyển dụng ngay!
Hotline: 028.6273.3496 – Email: contact@topdev.vn
Dịch vụ: https://topdev.vn/page/products
Trong lập trình, tìm kiếm phần tử trong mảng là một bài toán cơ bản với nhiều thuật toán có thể được sử dụng để giải quyết. Tìm kiếm nội suy (Interpolation Search) là một thuật toán được ưu chuộng sử dụng vì tốc độ tìm kiếm rất nhanh và chính xác. Trong bài viết này chúng ta cùng nhau tìm hiểu về thuật toán này và cách triển khai nó trong ngôn ngữ JavaScript nhé.
Tìm kiếm nhị phân
Interpolation Search là một giải thuật tìm kiếm nhanh, một biến thể cải tiến của tìm kiếm nhị phân (Binary Search). 2 giải thuật tìm kiếm này đều dựa trên nguyên tắc chia để trị (Divide and Conquer). Để giải thuật thực hiện được thì mảng đầu vào cần phải được sắp xếp sẵn từ trước.
Để hiểu về tìm kiếm nội suy, trước tiên chúng ta tìm hiểu Binary Search nhé.
Tìm kiếm nhị phân sẽ tìm kiếm một phần tử cụ thể bằng cách so sánh phần tử cần tìm với phần tử ở vị trí giữa (theo chỉ số) của mảng đầu vào:
Nếu bằng nhau => trả về kết quả tìm kiếm
Nếu phần tử cần tìm lớn hơn => thực hiện lặp lại bước trên với mảng con ở bên phải phần tử ở giữa
Nếu phần tử cần tìm nhỏ hơn => thực hiện lặp lại bước trên với mảng con ở bên trái phần tử ở giữa
Ở ví dụ trên, chúng ta tìm kiếm giá trị 2 trong mảng số từ 1 đến 10. Sẽ có 4 vòng lặp được thực hiện để tìm ra được giá trị cần tìm.
Ở trong ví dụ của tìm kiếm nhị phân chúng ta thấy rằng giải thuật không quan tâm đến giá trị đầu vào và luôn luôn chia đều mảng thành 2 phần bằng nhau. Thực tế nếu chúng ta đánh giá mảng số đầu vào cùng giá trị tìm kiếm thì có thể nhận thấy giá trị 2 sẽ có nhiều khả năng nằm ở vị trí đầu của mảng số vì nó gần hơn với giá trị bé nhất của mảng là 1 hơn là giá trị lớn nhất của mảng là 10. Nó cũng giống như việc khi chúng ta tra cứu từ điển, nếu cần tra cứu từ “Interpolation” thì chúng ta sẽ ưu tiên mở phần đầu của quyển từ điển hơn (do chữ cái I nằm gần đầu trong bảng chữ cái, cũng là thứ tự sắp xếp của quyển từ điển); ngược lại khi tra cứu từ “Search” thì ưu tiên sẽ là mở đến những trang gần cuối hơn.
Từ ý tưởng này, tìm kiếm nội suy cải tiến tìm kiếm nhị phân bằng cách tính toán trước vị trí dò trong mảng dựa trên giá trị cần tìm theo công thức:
Trong đó:
arr: mảng giá trị cần tìm kiếm
low: chỉ mục thấp nhất của mảng
high: chỉ mục cao nhất của mảng
target: giá trị cần tìm kiếm
mid: chỉ số tính toán được để thực hiện so sánh
Chúng ta cùng đi vào ví dụ cụ thể nhé:
Cho mảng số đã được sắp xếp như dưới đây, chúng ta cần tìm kiếm giá trị 18 trong mảng.
Tìm kiếm nội suy sẽ thực hiện các vòng lặp, với mỗi vòng lặp chúng ta có 2 bước như sau:
Bước 1: Tính toán chỉ số mảng cần so sánh theo công thức
Bước 2: So sánh giá trị cần tìm và phần tử trong mảng theo chỉ số tính toán
Nếu bằng nhau => trả kết quả đầu ra
Nếu phần tử của mảng có giá trị lớn hơn giá trị cần tìm => thực hiện lặp với mảng con bên trái
Nếu phần tử của mảng có giá trị nhỏ hơn giá trị cần tìm => thực hiện lặp với mảng con bên phải
Về cơ bản thì điểm khác nhau duy nhất giữa tìm kiếm nội suy và tìm kiếm nhị phân chính là bước 1.
Với bài toán trên, giải thuật tìm kiếm nội suy sẽ cần chạy qua 2 vòng lặp như dưới đây:
Vòng lặp đầu tiên, theo công thức thì mid sẽ cho giá trị được làm tròn là
mid = 0 + (18 – 10) * (14 – 0) / (47 – 10) = 3
và phần tử trong mảng đưa ra để so sánh là giá trị 16. Do 16 < 18 (giá trị cần tìm) => mảng mới sử dụng sẽ bắt đầu từ 18 (vị trí phần tử thứ 4)
Vòng lặp thứ 2,
mid = 4 + (18 – 18) * (14 – 4) / (47 – 18) = 0
Kết quả trả về đúng giá trị cần tìm ở vị trí thứ 4 của mảng.
Tìm kiếm nội suy có cách triển khai trong JavaScript khá đơn giản và dễ hiểu, bạn có thể tham khảo đoạn code dưới đây:
functioninterpolationSearch(sortedArray, seekElement) {letleftIndex=0;letrightIndex=sortedArray.length-1;while (leftIndex<=rightIndex) {constrangeDelta=sortedArray[rightIndex] -sortedArray[leftIndex];constindexDelta=rightIndex-leftIndex;constvalueDelta=seekElement-sortedArray[leftIndex];if (valueDelta<0) {return-1; }if (!rangeDelta) {returnsortedArray[leftIndex] ===seekElement?leftIndex:-1; }// Tính toán giá trị chỉ số của mảng cần so sánhconstmiddleIndex=leftIndex+Math.floor((valueDelta*indexDelta) /rangeDelta);// trả kết quả nếu tìm được giá trị cần tìmif (sortedArray[middleIndex] ===seekElement) {returnmiddleIndex; }if (sortedArray[middleIndex] <seekElement) {// sử dụng mảng bên phảileftIndex=middleIndex+1; } else {// sử dụng mảng bên tráirightIndex=middleIndex-1; } }return-1;}
Tìm kiếm nội suy có độ phức tạp là O(log(log(n))) so với tìm kiếm nhị phân với độ phức tạp là O(log(n)) thì việc cải tiến này khá đáng giá. Giải thuật cũng sẽ hiệu quả hơn với những bài toán mà các phần tử trong mảng được phân bố đều.
Kết bài
Như vậy là chúng ta đã cùng nhau tìm hiểu thuật toán tìm kiếm nội suy Interpolation Search và cách triển khai thuật toán này trong ngôn ngữ lập trình JavaScript. Đây là một thuật toán hay và cũng dễ triển khai trong nhiều ngôn ngữ lập trình khác nhau. Hy vọng bài viết hữu ích dành cho bạn và hẹn gặp lại trong các bài viết tiếp theo của mình.
UI UX là gì? – UX UI Design là một ngành khá hot và có tiềm năng rất lớn trong thời đại công nghệ số ngày nay. Vậy bạn có từng tự hỏi rằng công việc của một UX/UI designer là như thế nào? Một UX UI Designer thì phải có những tính cách hay tố chất như thế nào? Người làm UX UI Design sẽ phối hợp với những chức năng khác như thế nào? Bài viết này sẽ giải đáp những câu hỏi đó.
UX UI là gì?
UX (User Experience) và UI (User Interface) là hai khái niệm quan trọng trong lĩnh vực thiết kế và phát triển ứng dụng, trang web và các sản phẩm số.
UX là gì?
UX (User Experience – Trải nghiệm người dùng): Đây là khái niệm liên quan đến cách mà người dùng tương tác với sản phẩm của bạn và cảm nhận về trải nghiệm đó. Mục tiêu chính của UX design là đảm bảo người dùng có trải nghiệm dễ sử dụng, hiệu quả và thỏa mãn khi sử dụng sản phẩm của bạn. Điều này bao gồm việc xem xét về cách mà sản phẩm được tổ chức, cách thức tương tác của người dùng với sản phẩm, và cảm xúc mà họ có sau khi sử dụng sản phẩm đó.
UI là gì?
(User Interface – Giao diện người dùng): UI là phần của sản phẩm mà người dùng tương tác trực tiếp. Điều này bao gồm các yếu tố như nút bấm, hình ảnh, biểu đồ, màu sắc, kiểu chữ, và mọi thứ mà người dùng có thể nhìn thấy và chạm vào khi sử dụng sản phẩm. Mục tiêu của UI là tạo ra một giao diện thẩm mỹ, dễ nhìn, dễ sử dụng và tương thích với mục đích sử dụng của sản phẩm.
Tóm lại, UX tập trung vào trải nghiệm toàn diện của người dùng khi tương tác với sản phẩm, trong khi UI tập trung vào việc tạo ra giao diện thị giác hấp dẫn và dễ sử dụng. Cả hai khái niệm này đều quan trọng trong việc thiết kế và phát triển sản phẩm để đảm bảo rằng sản phẩm không chỉ hấp dẫn mắt mà còn mang lại trải nghiệm tích cực cho người dùng.
Người làm UX/UI có trách nhiệm với cả hai bên: người dùng và công ty phát triển sản phẩm.
Đối với người dùng: UX/UI Designer phải hiểu những suy nghĩ và giả định của mình luôn là góc nhìn chủ quan và không nhất thiết phản ánh đúng cách nhìn của người dùng sản phẩm. Những thiết kế của người UX/UI Designer luôn được hướng dẫn bởi người dùng, với từng feature và yếu tố giao diện được đặt vào đều với mục tiêu rõ ràng và liên quan đến nhu cầu của người dùng. Khi có một insight hay giả thuyết nào đó, người UX/UI Designer sẽ muốn thử nghiệm để kiểm chứng giả thuyết của mình chứ không lập tức chấp nhận nó.
Tuy nhiên, từ nền tảng tâm lý học, người UX/UI Designer cũng phải hiểu được người dùng không thật sự hiểu chính bản thân họ, và vì thế mà sẽ không bao giờ ngay lập tức chấp nhận những ý kiến của người dùng như là một chân lý tối cao.Nhìn chung, không có một công thức nào để nói rằng lúc nào bạn có thể tin tưởng người dùng và thật sự họ muốn cái quái gì, điều này phụ thuộc nhiều vào kinh nghiệm cũng như sự sâu sắc của chính UX/UI Designer.
Đối với công ty phát triển sản phẩm: nói rằng đặt người dùng lên hàng đầu, nhưng mục tiêu của UX/UI Designer vẫn là giúp công ty đạt mục tiêu kinh doanh. Dung hòa được nhu cầu của người dùng và mục tiêu của chính sản phẩm không phải là vấn đề đơn giản.
Về lâu dài những gì là tốt nhất cho khách hàng cũng là tốt nhất cho doanh nghiệp. “Khách hàng vui thì đời vui” mà! Tuy nhiên, trong ngắn hạn, đôi lúc bạn sẽ phải đánh đổi giữa việc làm hài lòng người dùng và hiệu quả kinh doanh. Đây cũng là một trong những quyết định khó khăn ngay cả với những Designer dày dạn kinh nghiệm.
Hai trách nhiệm này của người UX/UI Designer không bao giờ được tách rời.
Mục tiêu của thiết kế UI tập trung vào việc thể hiện những yếu tố thẩm mỹ đang thịnh hành và được ưa chuộng bởi người dùng. Những người làm UI cần nắm vững thị hiếu của đối tượng người dùng mà doanh nghiệp hướng đến, để lựa chọn nút bấm, biểu tượng, bố trí, phông chữ, màu sắc và hình ảnh phù hợp. Họ phải cân nhắc xem đối tượng người dùng có ưa thích thiết kế bo tròn hay góc vuông, tông màu ấm khi kết hợp với loại hình chữ viết nào sẽ phù hợp và hấp dẫn hơn,…
Hơn nữa, việc thiết kế UI còn phải truyền tải được hình ảnh và sức mạnh của thương hiệu thông qua giao diện sản phẩm. Điều này đảm bảo tính nhất quán, thống nhất và thẩm mỹ chung trong giao diện.
Công việc của một UI Designer có thể trải qua các bước như:
Phân tích khách hàng.
Nghiên cứu thiết kế.
Xây dựng sản phẩm mẫu.
Xem xét sự tương tác
Xem xét sự thích ứng với tất cả các kích cỡ của màn hình thiết bị.
Thực hiện với nhà phát triển.
Công việc của UX Designer
Công việc của một người thiết kế trải nghiệm người dùng (UX) đòi hỏi quá trình quan sát và phân tích tỉ mỉ để lựa chọn những giải pháp tối ưu cho trải nghiệm của người dùng. Trong quá trình này, các bước chính bao gồm:
Quan sát và phân tích: UX designer tiến hành quan sát cẩn thận về cách người dùng tương tác với sản phẩm. Thông qua việc quan sát, họ có thể phát hiện các vấn đề tiềm ẩn và cơ hội cải thiện.
Lựa chọn giải pháp phù hợp: Dựa trên quan sát và phân tích, UX designer phải đưa ra những quyết định thông minh để cải thiện trải nghiệm người dùng. Điều này có thể bao gồm thay đổi vị trí nút bấm, cải thiện luồng tương tác, hay tối ưu hóa trải nghiệm tổng thể.
Tối ưu hóa user flow: UX designer phải xác định và đánh giá liệu người dùng có thể thực hiện tốt tất cả các bước trong quá trình trải nghiệm sản phẩm (user flow) hay không. Họ cân nhắc việc giảm thiểu số bước, làm cho quá trình dễ dàng hơn và đáp ứng nhu cầu người dùng.
Tạo ra thiết kế tương tác: Dựa trên phân tích và tối ưu hóa, UX designer tạo ra các giao diện tương tác mô phỏng trước khi triển khai. Điều này giúp họ thử nghiệm và cải thiện trước khi sản phẩm thật sự được phát triển.
Liên kết với UI: Một phần quan trọng của công việc UX là làm việc cùng UI designer để đảm bảo rằng giao diện thể hiện đúng các yếu tố trải nghiệm được thiết kế và tối ưu hóa.
Người như thế nào thì thích hợp để trở thành UX/UI Designer?
Những người làm UX UI Design thường nên có những tố chất sau:
Sự đồng cảm: họ dễ dàng hiểu hay đoán được người khác đang hiểu gì và tại sao.
Sự khiêm tốn: dù có là chuyên gia hay không, họ luôn lắng nghe và học hỏi từ mọi người xung quanh, đặc biệt là người dùng của mình.
Sự quan sát và tò mò về mọi thứ xung quanh: họ cảm thấy thích thú khi được nghe những câu chuyện của người khác hay được tham gia vào những hoạt động mới mà trước đây mình chưa biết đến.
Không phán xét: họ không áp đặt các giá trị đạo đức hay lối suy nghĩ của mình vào người khác và cho rằng mình luôn đúng.
Chú ý đến chi tiết: họ thường thấy được những chi tiết nhỏ nhoi ảnh hưởng đến mọi người như thế nào, và hiểu được những thay đổi nhỏ cũng có thể tạo nên ảnh hưởng lớn.
Những kỹ năng mềm cơ bản của UX UI là gì?
Kỹ năng giao tiếp: UX/UI Designer phải giao tiếp với nhiều bộ phận khác nhau với các chuyên môn khác nhau, truyền đạt được thông tin một cách hiệu quả, cho dù đó là từ khách hàng đến bộ phận kỹ thuật hay marketing và kinh doanh.
Hiểu biết về tâm lý học: hầu hết tất cả UX/UI Designer, vào nhiều lúc trong sự nghiệp của mình, đều tìm hiểu và đào sâu vào các yếu tố và lý thuyết tâm lý.
Kỹ năng thuyết phục: người UX/UI Designer phải thuyết phục được không chỉ bản thân mà còn những người làm chung đội ngũ, những người làm kỹ thuật và product manager đi theo triết lý design và áp dụng những kết quả của mình.
Kỹ năng thấu hiểu vấn đề: họ có thể nhìn qua được những biểu hiện bề mặt của vấn đề và xác định được đúng vấn đề cốt lõi cần phải giải quyết.
Kỹ năng thiết kế và prototype: bạn cần có khả năng tạo ra một sản phẩm mẫu trong thời gian ngắn để có thể nhanh chóng thử nghiệm và cải thiện sản phẩm đó. Bên cạnh đó, trong hầu hết các trường hợp, bạn phải tự mình hoàn thành một sản phẩm hoàn thiện. Vì vậy, trang bị chuyên môn về thiết kế đồ họa, giao diện, sản phẩm là cần thiết.
Hiểu biết căn bản về kỹ thuật: một chút hiểu biết về kỹ thuật rất có ích. Nếu bạn có background kỹ thuật cũng rất tốt. Đây cũng là một lợi thế khi bạn hiểu những khả năng và giới hạn của công nghệ để xây dựng những giải pháp tốt.
Kỹ năng phân tích dữ liệu kết hợp tư duy sáng tạo: phân tích dữ liệu là cần thiết khi bạn phải làm việc trong những dự án lớn hoặc đã ổn định. Tư duy sáng tạo, ngược lại, là một cái vui của nghề. Bạn có thể cập nhật xu hướng, vui với những tương tác nhỏ, tạo nên những điều thú vị riêng cho sản phẩm.
Kotlin hiện đã trở thành ngôn ngữ chính để lập trình ứng dụng Android, bên cạnh Java đã có phần già nua. Khi mới chuyển sang sử dụng Kotlin, chắc chắn bạn sẽ có đôi chút bỡ ngỡ. Nhưng mình đảm bảo, càng về sau, bạn càng cảm thấy khoái “anh chàng” Kotlin này.
Bài viết này, mình sẽ chia sẻ một số kinh nghiệm, kotlin tips trick để bạn viết code nhàn hơn, gọn gàng và nhanh hơn.
Cài đặt Kotlin
Hiện nay, bản Android Studio mới nhất đã tích hợp sẵn Kotlin, nên bạn không cần phải cài đặt thêm gì cả.
Mình chỉ lưu ý một vài điểm ch dự án của bạn.
Một là, để tạo mới một kotlin class, bạn chọn:
File > New > Kotlin file/class
Hoặc File > New > Kotlin activity
Phần đuôi mở rộng của các tệp kotlin là .kt
Hai là, Android Studio có một plugin hỗ trợ viết mã Kotlin rất tốt, bạn nên sử dụng nó cho dự án của mình. Mở build.gradle (module level), thêm dòng sau:
apply plugin: 'kotlin-android-extensions'
Nếu bạn tạo dự án Kotlin từ đầu bằng Android Studio thì chắc chắn trong build.gradle (application level) sẽ có đoạn code kiểu như sau:
buildscript { ext.kotlin_version = '1.0.2' repositories { jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}
Ok, việc thiết lập để dự án sử dụng được Kotlin chỉ có vậy thôi.
Dưới đây là một số thủ thuật/tính năng của Kotlin mà cá nhân mình thấy nó khá hay ho, đặc biệt là so với cách viết của Java.
1. Tính năng Static Layout Import
Trước đây, khi viết ứng dụng Android, không ai là không biết tới từ khóa: findViewById() để tạo một reference từ code Java tới View trong layout XML. Nhiều khi, với layout có nhiều View cần phải reference, bạn nhìn code khai báo findViewById() rất rất là nhiều.
Cũng có một số giải pháp khắc phục điều này, như sử dụng thư viện Butterknife, giúp tiết kiện thao tác khai báo đó. Đến Kotlin, nó còn cải tiến thêm một bước nữa, bằng cách cho phép import tất cả reference tới View chỉ bằng một lần import.
Kotlin cũng giống như Javascript, không cần thiết phải có dấu chấm phẩy ( ; ) cuối mỗi dòng lệnh.
Như bạn thấy, chúng ta không cần phải khai báo findViewById() gì hết, truy xuất thằng vào view thông qua ID của nó.
helloWorldTextView.text = "Hello World!"
Góc chú ý:
Trong hàm setContentView(R.layout.activity_main) phải trỏ tới đúng layout nhé. Tránh hiện tượng “râu ông này cắm cằm bà kia“. Nếu bạn trỏ nhầm layout, tất nhiên là bạn gọi reference từ ID của View sẽ bị NULL, ứng dụng sẽ bị crash.
Riêng với Fragment, bạn nên khai báo setContentView() trong hàm onCreateView(), sử dụng các reference để thiết lập UI trong onViewCreated().
So với tính năng static layout import, việc viết POJO (Plain Old Java Object) class bằng Kotlin còn ngắn gọn hơn nữa (so với Java).
Viết POJO class để làm gì? POJO class thực chất là các data class, mục đích để bạn định nghĩa dữ liệu kiểu Object, dùng để lưu dữ liệu vào DB, parse JSON…
Ví dụ, chúng ta có một JAVA class như sau:
publicclass User { private String firstName; private String lastName; public String getFirstName(){ return firstName; } public void setFirstName(String firstName){ this.firstName = firstName; } public String getLastName(){ return lastName; } public void setLastName(String lastName){ this.lastName = lastName; }}
Với Kotlin, mã nguồn sẽ ngắn gọn hơn rất nhiều.
Đầu tiên là bạn không cần phải viết từ khóa public, vì mặc định mọi thứ trong kotlin là public rồi.
Không cần phải viết hàm get/set. Trong Kotlin, bạn truy xuất trực tiếp vào properties.
Do đó, với đoạn code Java trên, khi chuyển thành Kotlin thì chỉ còn như sau:
class User {var firstName: String? = nullvar lastName: String? = null}
Lambda expressions là một tính năng được giới thiệu trong bản JAVA 8, được rất nhiều người ưu thích. Tuy nhiên, trên Android thì cũng mới chỉ hỗ trợ java 7, không biết bây giờ thì thế này. Điều đó đã khiến các lập trình viên đi tìm giải pháp thay thế, có thể kể tới Retrolambda
Nhưng nếu bạn sử dụng Kotlin thì lại đơn giản, bạn được hỗ trợ sẵn rồi, không cần cài gì thêm cả.
Một trong những thứ khiến bạn ám ảnh và đau đầu nhất trong Java, đó chính là lỗi NullPointerException. Khi chuyển sang Kotlin, với tính năng Null-safety, cơn đau đầu đó sẽ chấm dứt.
Với Kotlin, chỉ duy nhất những lỗi sau mới gây ra NullPointerException:
Bạn cố tình throw ra NullPointerException
Sử dụng toán tử !! (sẽ đề cập ở phần dưới bài viết)
Nếu thuộc tính lateinit được truy xuất trong hàm khởi tạo trước khi nó được tạo. Lúc này bạn sẽ gặp lỗi anUninitializedPropertyAccessException
Theo mặc định, tất cả các biến, thuộc tính của Object đều là non-null (không thể giữ giá trị null) – Trừ khi chúng được khai báo là nullable.
Như đề cập ở trên, để khai báo một biến có thể null, bạn chỉ cần thêm dấu hỏi chấm vào sau kiểu dữ liệu. Ví dụ:
val number: Int? = null
Khi đã khai báo như trên mà bạn lại cố tình gọi hàm để tạo NullPointerException như này:
val number: Int? = nullnumber.toString()
Đoạn code sẽ không được complie vì không vượt qua được null check của chương trình. Nhưng nếu bạn thêm điều kiện check null thì lại OK
val number: Int? = nullif(number != null){ number.toString();}
Hoặc viết gọn hơn:
val number: Int? = nullnumber?.toString()
Toán tử !!
Đôi khi, bạn muốn chương trình có thể bắn ra NullPointerException như JAVA để khi test gặp lỗi mà biết mà sửa. Bạn có thể sử dụng toán tử !!
Đoạn code này sẽ bắn ra NullPointerException:
val number: Int? = nullnumber!!.toString()
Thuộc tính lateinit
Có một trường hợp khi sử dụng thuộc tính lateinit mà có thể gây lỗi tương tự NullPointerException.
Chúng ta cùng xem xét ví dụ sau:
class InitTest {lateinitvar s: String;init{val len = this.s.length}}
Đoạn code khi compile sẽ không vấn đề gì cả. Nhưng khi chạy chương trình, ngay khi instance của đối tượng TestClass được, bạn sẽ gặp lỗi UninitializedPropertyAccessException.
Nguyên nhân như mình đã đề cập ở trên, do bạn truy xuất vào thuộc tính s trước khi nó được khởi tạo.
5. Hàm with()
Hàm with() rất hữu ích khi bạn cần truy xuất vào nhiều thuộc tính của cùng một đối tượng. Nó giúp bạn đỡ phải gõ nhiều tên đối tượng để gọi thuộc tính.
with(helloWorldTextView){ text = "Hello World!" visibility = View.VISIBLE}
6. Chuyển một Object sang Map
Có một use case phổ biến đó là lưu trữ giá trị của các thuộc tính vào một mảng Map. Điều này bạn thường thấy với các ứng dụng làm việc với RESTful API khi cần parse JSON.
Sau đây là một ví dụ:
classUser(val map: Map<String, Any?>){ val name: String by map val age: Int by map}
Khi sử dụng như sau:
val user = User(mapOf( "name"to"John Doe", "age"to25))
7. Collections và Functional Operations
Với sự hỗ trợ của lambdas, các thao tác với Collection trong Kotlin được nâng lên tầm cao mới.
Đầu tiên, Kotlin có sự phân biệt giữa mutable collection và immutable collection.
Ví dụ: Có hai phiên bản của Iterable interface
Iterable
MutableIterable
Tương tự, cũng có hai phiên bản của List, Set và Map interfaces.
Ví dụ: toán tử any sẽ trả về giá trị true nếu có ít nhất một phần tử thỏa mãn điều kiện.
val list = listOf(1, 2, 3, 4, 5, 6)assertTrue(list.any{ it % 2 == 0})
Và còn rất nhiều tính năng khác nữa, các bạn có thể tham khảo thêm trong trang tài lệu chính thức của Kotlin.
Tạm kết
Trên đây chỉ là một số Kotlin tips, những tính năng hay ho mà Kotlin cung cấp. Nếu bạn càng làm việc nhiều với Kotlin, chắc chắn bạn sẽ ngày càng thêm yêu ngôn ngữ này.
Mình hi vọng bài viết này sẽ giúp ích cho các bạn trong dự án sắp tới.
Trong thời đại số ngày nay, công nghệ thông tin không chỉ là một phần của cuộc sống hàng ngày mà còn là trọng tâm của sự phát triển xã hội và kinh tế. Vì vậy, nhiều bạn trẻ đã chọn theo học ngành Công nghệ thông tin với mong ước sẽ có một công việc tốt sau khi ra trường.
Vậy bạn đã thật sự biết Ngành công nghệ thông tin là gì? Học ngành công nghệ thông tin ra làm gì? Đâu là những ngành sẽ hot trong tương lai? Tất cả sẽ được giải đáp trong bài viết này!
Ngành công nghệ thông tin là gì?
Ngành công nghệ thông tin hay IT (Information Technology) là lĩnh vực nghiên cứu, phát triển và ứng dụng các hệ thống, phần mềm và mạng máy tính nhằm lưu trữ, xử lý và trao đổi thông tin. Đây là một ngành học liên quan đến việc sử dụng máy tính và phần mềm để quản lý thông tin. Ngành IT bao gồm nhiều nhóm ngành công nghệ thông tin nhỏ như lập trình, quản trị mạng, an ninh mạng, phát triển web, khoa học dữ liệu, trí tuệ nhân tạo và nhiều lĩnh vực khác.
Công nghệ thông tin là ngành gì?
Ngành công nghệ thông tin học những gì?
Ngành Công nghệ Thông tin là một lĩnh vực rộng lớn và đa dạng, cung cấp cho sinh viên nhiều kiến thức và kỹ năng quan trọng để làm việc trong thế giới kỹ thuật số hiện đại. Khi theo học CNTT, sinh viên sẽ học về các kiến thức cơ bản như lập trình, cơ sở dữ liệu, mạng máy tính, an toàn thông tin và phát triển phần mềm. Ngoài ra, họ cũng có cơ hội tiếp cận các xu hướng mới nhất trong công nghệ như trí tuệ nhân tạo, học máy, blockchain và Internet of Things (IoT). Đào tạo trong ngành này tập trung vào việc phát triển kỹ năng lập trình, giải quyết vấn đề và phân tích dữ liệu để áp dụng vào các lĩnh vực như quản lý hệ thống thông tin, phát triển ứng dụng di động, thiết kế trang web và nhiều ứng dụng công nghệ khác.
Ngoài các kiến thức chuyên ngành, kỹ năng mềm là một phần không thể thiếu trong con đường trở thành lập trình viên của bạn:
Ngoại ngữ: IT là lĩnh vực thay đổi không ngừng, ngoại ngữ sẽ là phương tiện giúp bạn tiếp cận những đổi mới nhanh nhất thông qua tài liệu nước ngoài. Ngoài ra, việc có ngoại ngữ cũng giúp bạn dễ dàng có được cơ hội việc làm ở các tập đoàn đa quốc gia với mức lương hấp dẫn.
Giải quyết vấn đề: Phát triển kỹ năng tư duy logic và giải quyết vấn đề là yếu tố không thể thiếu khi bạn theo học ngành CNTT, bởi vì bạn luôn phải đối mặt với những bài toán khó nhằng đòi hỏi sự nhạy bén và logic tốt.
Làm việc nhóm: Bởi một dự án công nghệ rất phức tạp đòi hỏi sự làm việc nhóm trơn tru giữa các phòng ban, vì vậy các kỹ sư CNTT tương lai cần rèn luyện năng giao tiếp và làm việc hiệu quả trong nhóm.
Quản lý thời gian: Kỹ năng quản lý thời gian và tổ chức công việc giúp kết quả công việc được tốt hơn và giúp bạn kiểm soát được khối lượng công việc, tránh miss các task quan trọng.
Ngành công nghệ thông tin mở ra một thế giới rộng lớn với nhiều lựa chọn hấp dẫn, đa dạng và đầy tiềm năng. Vậy công nghệ thông tin là làm gì? Dưới đây là một số hướng đi phổ biến cho những người học ngành này:
Quản trị mạng và bảo mật thông tin
Học CNTT ra làm gì?
Với tầm quan trọng của dữ liệu an ninh mạng, nhu cầu về quản trị mạng và bảo mật thông tin ngày càng tăng cao. Công việc này liên quan đến việc duy trì, quản lý hệ thống mạng, đảm bảo an toàn thông tin và phòng chống các rủi ro liên quan đến bảo mật.
Quản trị hệ thống
Chuyên môn quản lý hệ thống giúp đảm bảo hoạt động ổn định của các hệ thống máy tính và phần mềm trong tổ chức. Công việc này bao gồm việc cài đặt, theo dõi, và tối ưu hóa hệ thống để đảm bảo hiệu suất cho hệ thống và hoạt động an toàn.
Người làm công việc này sẽ kiểm tra, đảm bảo rằng phần mềm đáp ứng các tiêu chuẩn chất lượng và hoạt động một cách mượt mà. Họ thường tham gia vào quy trình thử nghiệm phần mềm, tìm kiếm lỗi và đảm bảo tính tương thích của phần mềm.
Chuyên gia quản lý dữ liệu (Database Admin)
Với sự gia tăng của dữ liệu, các chuyên gia quản lý dữ liệu có vai trò quan trọng trong việc tổ chức và phân tích dữ liệu. Công việc này đòi hỏi kiến thức về cơ sở dữ liệu, khoa học dữ liệu và các kỹ thuật phân tích.
Lập trình viên (Developer)
Công nghệ thông tin làm gì? Lập trình viên
Lập trình viên là người tạo ra các ứng dụng và phần mềm. Họ sẽ đảm nhận công việc viết mã, phát triển các tính năng và giải quyết các vấn đề kỹ thuật. Sự sáng tạo và khả năng giải quyết vấn đề là yếu tố quan trọng khi làm công việc này.
Đối với những người đam mê trò chơi, công việc thiết kế game đem lại cơ hội để tạo ra những trải nghiệm giải trí độc đáo. Thường yêu cầu kỹ năng lập trình, thiết kế đồ họa và tư duy sáng tạo.
Kỹ sư AI
Cùng với sự phát triển của Trí tuệ nhân tạo (AI), các kỹ sư AI đang là người đóng góp quan trọng trong việc phát triển các ứng dụng thông minh, từ chatbot cho đến các hệ thống học máy phức tạp.
Với mức độ số hóa của thế giới ngày càng cao, có nhu cầu lớn về các trang web chất lượng. Thiết kế viên và nhà phát triển web tạo ra các trang web hấp dẫn, tương tác và thân thiện với người dùng.
Dựa vào đam mê và kỹ năng của bạn, bạn có thể chọn lựa một trong những hướng đi này để phát triển sự nghiệp trong ngành công nghệ thông tin.
Ngành công nghệ thông tin là một ngành học vô cùng tiềm năng cho tương lai của bạn. Từ việc làm phát triển phần mềm đến trở thành chuyên gia bảo mật mạng, ngành này không ngừng đổi mới và phát triển. Bằng việc học tập và rèn luyện, bạn có thể trở thành một người dẫn đầu trong cuộc cách mạng công nghệ và góp phần thay đổi thế giới. Hy vọng rằng bài viết này đã giúp bạn trả lời được câu hỏi “Học ngành công nghệ thông tin ra làm gì?”. Tiếp tục theo dõi TopDev để cập nhật các bài viết mới về lập trình và công nghệ nhé!
Bài viết được sự cho phép của tác giả Tống Xuân Hoài
Vấn đề
Captcha là một cách thức được sinh ra nhằm mục đích ngăn chặn hành vi spam trên các ứng dụng, đặc biệt là đối với ứng dụng web. Nếu không có captcha, kẻ tấn công có thể dễ dàng tạo ra những đoạn mã tự động gửi truy vấn với tần suất liên tục đến chức năng nào đó nhằm phá hoại hệ thống.
Tuy vậy, captcha không phải không có nhược điểm. Có lẽ hạn chế lớn nhất của nó là gây “lú” cho người dùng. Nhiều đoạn mã được sinh ra để xác minh bạn là con người, nhưng đôi khi bạn phải tự hỏi liệu mình có là người không khi không thể dịch được những kí tự méo mó hoặc mờ tịt kia.
Chức năng bình luận trên 2coffee không sử dụng captcha để tạo ra khó khăn cho người dùng giống như trên. Thay vào đó tôi đã áp dụng một kỹ thuật gọi là “rate/limit” để hạn chế hành vi spam. Nói nôm na, nó ngăn chặn một hành vi liên tục, giới hạn số lần thực hiện trong một khoảng thời gian nhất định. Ví dụ như chỉ cho phép người dùng bình luận tối đa 3 lần trong 1 phút, hay cần phải chờ ít nhất 10 giây để cho lượt gửi bình luận tiếp theo.
Bài viết ngày hôm nay tôi xin phép được tường thuật lại quá trình triển khai tính năng rate/limit của mình. Tôi nghĩ rằng điều đó sẽ giúp ích cho bạn đọc, hoặc hy vọng được nhận lại ý kiến của bạn đọc để có thêm cách triển khai tốt hơn.
Ý tưởng ban đầu rất đơn giản, vì không quá khắt khe nên tôi quyết định cho phép người dùng được gửi bình luận sau mỗi 10 giây kể từ lần gửi thành công trước đó. Sau khi gửi bình luận thành công ở một bài viết thì cần chờ tối thiểu 10 giây để gửi bình luận ở bất kỳ bài nào.
Lúc này cần triển khai được thuật toán có đầu vào là id người dùng, đầu ra là true/false. True nếu chưa vượt quá limit và false nếu đã bình luận quá nhiều. Dựa vào đó để cho phép họ gửi được hay không.
true hãy bắn ra một lỗi không được phép bình luận. Ngược lại nếu là null thì cho phép thêm bình luận rồi sau đó thêm một key comment_limit:1 với thời gian hết hạn là thời gian bạn thiết lập. Giả sử là 10 giây:
SET comment_limit:1 true EX 10
Khi đó, cứ sau 10 giây thì comment_limit:1 sẽ tự động bị xóa và trả lại logic được phép bình luận cho người dùng.
Có nhiều cách để triển khai thuật toán rate/limit cho phần bình luận. Tôi đang áp dụng cách sử dụng tính năng key tự động xóa kết hợp với việc quy ước tên của key để tạo ra logic kiểm tra tính khả dụng của hoạt động bình luận. Còn bạn có cách nào khác hãy để lại bình luận cho mọi người biết nhé!
TensorFlow.js là một phiên bản của thư viện machine learning TensorFlow nổi tiếng, giúp mang deep learning tới thế giới Javascript. Giờ đây, bạn có thể define, train, và chạy Machine Learning với Nodejs.
Pre-trained models nghĩa là giờ các bạn có thể dễ dàng thực hiện các tác vụ phức tạp như nhận dạng khuôn mặt, sáng tạo nhạc, phát hiện tư thế 96 hay 69… chỉ với vài dòng Javascript đơn giản.
TensorFlow.js ban đầu được phát triển như là một thư viện front-end dành cho trình duyệt. Sau đó, nó được cập nhật để hỗ trợ Node.Js. Điều này, cho phép bạn sử dụng TensorFlow.js cho các ứng dụng phía back-end mà không phải cần đến Python.
Nghe có vẻ hấp dẫn nhỉ? Chúng ta sẽ cùng nhau tìm hiểu Machine Learning với Nodejs sử dụng TensorFlow.js nhé!
Vẫn như mọi khi, để việc học đi đôi với thực hành. Chúng ta sẽ cùng nhau xây dựng một ứng dụng Machine Learning như sau:
Đầu bài: Sử dụng TensorFlow.js để thực hiện nhận dạng hình ảnh (visual recognition) trên hình ảnh bằng JavaScript, tất nhiên là với môi trường Node.js.
Nhưng, trước khi chúng ta đi vào viết code, mình cùng nhau tìm hiểu tổng quan về thư viện TensorFlow đã nhé!
Lưu ý: Bài viết về Machine Learning nên sẽ có nhiều thuật ngữ chuyên ngành như: Model, training, visual recognition, pre-trained models… Các bạn chịu khó tìm hiểu thêm nhé!
TensorFlow là một thư viện mã nguồn mở (open-source) cho các ứng dụng machine learning. TensorFlow cũng có thể được sử dụng để implement các neural networks hay các thuật toán deep learning.
Được phát hành tháng 11, 2015, ban đầu TensoFlow là một thư viện Python. Nó được sử dụng khả năng tính toán của CPU và GPU để training và đánh giá các machine learing models. Và tất nhiên, thời điểm đó, nó được thiết để chạy trên các máy chủ có hiệu suất cực cao và đắt tiền.
Gần đây, TensorFlow đã thay đổi rất nhiều, khi nó có thể chạy trên các thiết bị có hiệu suất thấp hơn Mobile hay trình duyệt web.
1. TensorFlow Lite
Tensorflow Lite, là một phiên bản lightweight dành riêng cho các thiết bị di động như mobile hay các thiết bị nhúng.
Đi kèm với nó là một loạt các pre-trained deep learning models (các models được training sẵn từ trước, bạn chỉ việc sử dụng) cho các nhiệm vụ nhận dạng (vision recognition), người ta gọi là MobileNet.
MobileNet được thiết kế để hoạt động tốt và hiệu quả trên các thiết bị hạn chế về tài nguyên. Thế mới gọi là Lite, đúng không
Theo sau Tensorflow Lite, TensorFlow.js mới được công bố vào tháng 3, 2018. Phiên bản này được phát triển để chạy trên trình duyệt, dựa trên một dự án trước đó là deeplearn.js.
Thông qua thư viện này, các nhà phát triển có thể sử dụng API Javascript để training, load, và chạy models.
TensorFlow.js gần đây có thể chạy trên Nodejs nhờ sử dụng module: tfjs-node
3. Import Models có sẵn vào TensorFlow.js
Như mình đã nói ở trên, đi kèm với TensorFlow.js, có rất nhiều models có sẵn, và bạn hoàn toàn có thể import vào dự án của mình.
Các models này cần phải convert sang định dạng phù hợp trước khi có thể chạy được.
Có một số models được training sẵn, thực hiện các tác vụ như:
Image classification
Pose detection
K-nearest neighbours
#Machine learning với Node.js kết hợp TensorFlow.js
Sau khi đã tìm hiểu tổng quan về thư viện TensorFlow rồi, chúng ta sẽ bắt tay vào việc tự xây dựng một ứng dụng machine learning với Nodejs đơn giản nhé.
Trong đó tfjs-node-gpu là module nodejs có hỗ trợ GPU. Cả hai thư viện trên đều sử dụng native dependencie.
2. Loading thư viện TensorFlow
TensorFlow’s JavaScript API được exposed từ core library. Vì vậy , các module hỗ trợ Nodejs sẽ bị lộ các API không cần thiết.
const tf = require('@tensorflow/tfjs')// Load the binding (CPU computation)require('@tensorflow/tfjs-node')// Or load the binding (GPU computation)require('@tensorflow/tfjs-node-gpu')
3. Loading TensorFlow Models
TensorFlow.js cung cấp một NPM library (tfjs-models) để dễ dàng tải các model được training sẵn.
MobileNet model là model được dùng để phân loại hình ảnh, là một deep neural network trained được xác định dựa trên 1000 class khác nhau.
import * as mobilenet from '@tensorflow-models/mobilenet';// Load the model.const model = await mobilenet.load();
Nhưng đến đây thôi, bạn vẫn chưa chạy được đâu, vì sẽ gặp lỗi:
Error: browserHTTPRequest is not supported outside the web browser.
Như mình đã nói ở trên, mobilenet không hoạt động trên NodeJs.
Bởi vì, thư viện mobilenet là một warraper của tf.Model class. Nên khi hàm load() được gọi, nó sẽ tự động tải các models từ một từ bên ngoài ( external source) thay vì các models đã import trong dự án.
Trong các module Nodejs chưa hỗ trợ việc import các model từ các request HTTP, mà chỉ hỗ trợ import thủ công mà thôi.
Sau khi đã hiểu rõ vấn đề, chúng ta sẽ khắc phục thôi.
Lưu ý: Đoạn code này sẽ không hoạt động trên Nodejs vì thiếu các DOM.
Phương thức classify cho phép truyền vào các phần tử DOM (canvas, video, image), và tự động truy xuất, chuyển đổi cá bytes hình ảnh từ các thành phần này thành một lớp tf.Tensor3D, được sử dụng làm đầu vào training cho model.
OK, để khắc phục lỗi không chạy trên Nodejs, chúng ta thay vì cố gắng fake các DOM trong Nodejs, mình sẽ tự xây dựng các tf.Tensor3D thủ công.
Generating Tensor3D từ một Image
Khi mình tham khảo source code, mình thấy hàm để biến DOM thành tf.Tensor3D class, do vậy chúng ta cũng có thể học cách làm đó.
const values =new Int32Array(image.height* image.width* numChannels);// fill pixels with pixel channel bytes from imageconst outShape =[image.height, image.width, numChannels];const input = tf.tensor3d(values, outShape,'int32');
Trong đó:
pixels là mảng 2 chiều chứa danh sách các giá trị kênh cho mỗi pixel.
numChannels là số lượng các giá trị kênh trên mỗi pixel.
Tạo Input Values cho ảnh JPEG
jpeg-js library là một thư viện thuần javascript để mã hóa và giải mã JPEG cho Nodejs. Mình sẽ sử dụng thư viện này trích xuất giá trị RGB cho mỗi pixel.
const pixels = jpeg.decode(buffer,true);
Kết quả trả về là một Uint8Array, với bốn giá trị RGBA cho mỗi pixel. MobileNet Model chỉ sử dụng 3 giá trị RGB thôi, bỏ qua Alpha chanel.
Đoạn mã này giúp t chuyển đổi mảng 4 kênh (chanel) thành bản 3 kênh cho phù hợp với yêu cầu của MobileNet.
Như mình đã download ở trên thì mình download MobileNet model để phân loại ảnh với kích thước width x height 224 pixel. Các Input tensors phải chứa giá trị trong dải từ -1 tới 1, và kiểu float, cho mỗi giá trị của kênh.
Giá trị đầu vào cho mỗi hình ảnh có kích thước khác nhau sẽ phải đặt lại kích thước khi phân loại. Ngoài ra, các giá trị pixel trong bộ giải mã JPEG nằm trong phạm vi 0 – 255, thay vì từ -1 đến 1. Các giá trị này cũng cần phải convert trước khi classification.
TensorFlow.js có sẵn những hàm để bạn thực hiện convert dễ dàng, đừng quá lo lắng nhé. Đặc biệt hơn, tfjs-models/mobilenet library còn làm tự động những tác vụ convert đó nữa. Quá ngon!
Obtaining Predictions
MobileNet models đã được trained để có thể nhận biết được các thực thể từ 1000 classes trong bộ dữ liệu của ImageNet.
Output của model này sẽ xác suất chính xác mà mỗi thực thể đó có trong hình ảnh.
Bạn có thể tham khảo các thực thể mà MobileNet đã được trained để nhận biết tại đây.
MobileNet có cung cấp một hàm để bạn có thể lấy một lớp X ( là một thực thể nào đó như: con gấu trúc, con gà, cột đèn…) có xác suất chính xác cao nhất mà xuất hiện trong hình ảnh.
Ok, giờ chúng ta sẽ thử với một bức ảnh bất kỳ xem kết quả như thế nào nhé.
Ví dụ, mình sẽ thử với ảnh con gấu trúc ở trên xem sao. Bạn chạy lênh bên dưới:
node script.js mobilenet/model.json panda.jpg
Kết quả trả về sẽ hiện trong console log như sau:
classification results:[{ className:'giant panda, panda, panda bear, coon bear', probability:0.9993536472320557}]
Như vậy, xác suất hình trên chụp con gấu trúc là 99,9999%. Chắc chắn là con gấu trúc rồi
#Tổng kết
Nói về lĩnh vực AI, machine learning thì nó vô vàn lắm. Đây là đang xu hướng công nghệ cực kỳ hot. Bài viết này mình chỉ hướng dẫn các bạn những hiểu biết cơ bản về TensorFlow. Cách sử dụng TensorFlow với NodeJs mà thôi.
Nhận thấy được tiềm năng bùng nổ mạnh mẽ của các hệ sinh thái trên Facebook, các nhà tuyển dụng đã đang lên kế hoạch tối ưu các hình thức tiếp cận; nhằm tìm kiếm, khai thác và chọn lọc các nguồn ứng viên tài năng nhất. Đó là lý do họ dành một sự quan tâm đúng mực đối với việc làm thế nào để tuyển dụng hiệu quả trên facebook.
Bài viết sau đây, TopDev sẽ chia sẻ với các bạn các cách đăng tin tuyển dụng trên facebook hiệu quả, những tiêu đề tuyển dụng hấp dẫn,… Tất cả sẽ có trong bài viết sau đây.
Mục đích đăng tin tuyển dụng trên Facebook
1. Xây dựng thương hiệu tuyển dụng
Việc đăng tin tuyển dụng trên Facebook là một cách tuyệt vời để xây dựng thương hiệu tuyển dụng của công ty. Là một cách hiệu quả để thu hút, kết nối và tạo ấn tượng tích cực đối với ứng viên tiềm năng, đồng thời nâng cao danh tiếng của công ty trên thị trường lao động.
2. Xây dựng cộng đồng vững mạnh
Một trong những cách cực kì hiệu quả để gia tăng độ nhận biết tuyển dụng trên Facebook là tạo ra một cộng đồng nơi các ứng viên có cơ hội tìm hiểu về nghề nghiệp cũng như văn hóa công ty bạn.
Cách dễ nhất là thiết lập Facebook page chuyên về cơ hội nghề nghiệp và văn hóa doanh nghiệp. Tới đây nếu bạn thắc mắc rằng tại sao không đăng lên những web riêng của công ty như tên-công-ty.career.com để mọi người tiện theo dõi? TopDev cho rằng những thông tin đăng tải trên đó thì khá cứng nhắc, đôi khi không được cập nhật thường xuyên nữa. Vả lại ứng viên không phải họ lúc nào cũng chủ động lên thăm dò website của bạn mỗi ngày, vì thế TopDev tin là tốt hơn bạn cần đăng lên mạng xã hội như Facebook – nơi họ truy cập với mật độ cao.
Để làm được điều đó thì trước hết bạn cần xây dựng kế hoạch để duy trì trang và đảm bảo dành lượng thời gian nhất định để quản lí trang mỗi ngày. Ứng viên sẽ rời đi nhanh chóng nếu Facebook page bị trì hoãn dài.
Tuy nhiên trước khi dành mọi công sức để xây dựng và duy trì Facebook page, bạn cần thiết lập một chiến lược tuyển dụng IT trên Facebook trước. Đây là một số gợi ý:
Làm thế nào để bạn thể hiện văn hóa công ty một cách độc đáo?
Loại nội dung nào bạn sẽ chia sẻ?
Làm sao để thu hút người dùng Facebook và ứng viên tiềm năng?
Bạn làm cách nào để thể hiện vị trí ứng tuyển và bạn có dùng một hệ thống ứng tuyển không?
Bên cạnh đó bạn cần theo dõi sát sao các ý tưởng, chủ đề để đăng tải các bài đăng khi tuyển dụng IT trên Facebook để duy trì sự nhất quán trong suốt thời gian hoạt động của page nhé!
Một trong những cách đăng tin tuyển dụng trên Facebook tiếp theo là xây dựng nội dung thật sống động. Để đảm bảo page của bạn được xuất hiện thường xuyên trên newsfeed, bạn cần duy trì liên tục lượng nội dung mang tính hấp dẫn. Lượng engagement càng nhiều thì khả năng các bài đăng được hiển thị trên network của bạn càng cao. TopDev sẽ gợi ý cho bạn vài kiểu nội dung mà bạn có thể triển khai mỗi ngày nhưng không hề nhàm chán:
Thông tin chi tiết về công ty: Đăng tải hình ảnh, video clip của nơi làm việc cũng như các sự kiện gần đây, những cập nhật thú vị về công ty ví dụ như chuyển nơi làm việc,buổi ra mắt sản phẩm mới, sinh nhật của sếp, hay thậm chí là một bữa xế nho nhỏ hằng tuần. Bất cứ thứ gì để thu hút ứng viên và để họ có thể mường tượng ra làm việc ở công ty bạn sẽ như thế nào.
Nội dung liên quan tới nghề nghiệp bạn đang tuyển dụng: Hãy cập nhật và chia sẻ những thông tin thú vị về nghề nghiệp mà bạn đang tuyển dụng. Điều này giúp ứng viên tiềm năng đánh giá page của bạn là hay ho, thúc đẩy sự tò mò đối với công ty bạn, và có khi họ sẽ trở thành nhân viên của bạn đấy!
Các đặc điểm của nhân viên: Bạn có thể đăng hình ảnh, những lời chia sẻ từ chính nhân viên của bạn, hay về môi trường làm việc hằng ngày. Từ đó nêu bật lên những tiềm năng phát triển của công ty bạn và những giá trị ứng viên nhận được khi trở thành 1 thành viên!
4. Đẩy mạnh sự tương tác
Bên cạnh việc xây dựng nội dung hấp dẫn, việc xây dựng mối quan hệ tốt đẹp với ứng viên tiềm năng cũng là một cách đăng tin tuyển dụng trên Facebook hiệu quả, góp phần không nhỏ trong việc đẩy mạnh sự tương tác.
Nếu bạn cho rằng thúc đẩy engagement qua Facebook chủ yếu là nhờ vào việc tạo ra nội dung thu hút, trendy thì bạn nhầm to rồi đấy. Bởi khi ấy ứng viên chỉ thấy content của bạn hấp dẫn, không phải chính doanh nghiệp của bạn – điều cốt lõi để xây dựng thương hiệu tuyển dụng. Nói cách khác, bạn cần ít nhất 1 quản trị viên thường xuyên trả lời tin nhắn, comment và tham gia cùng ứng viên.
Chẳng hạn như Marriott đã dẫn đầu cuộc chơi khi họ thực hiện “Career Chats”. Khi đó 4 đến 5 nhân viên của Marriott sẽ trả lời câu hỏi của ứng viên tiềm năng ngay tức thì và thậm chí cho họ những lời khuyên hữu dụng khi ứng tuyển nữa. Đây là điều mà khó có doanh nghiệp nào duy trì được. TopDev tin rằng nếu bạn bắt đầu chăm chút hơn cho page qua cách này, nguồn ứng viên dồi dào trong tương lai gần không là mơ đâu !!
5. Dùng Facebook để lôi kéo ứng viên bị động
Ứng viên bị động là gì? Là những ứng viên không chủ động tìm việc nhưng vẫn hứng thú với những vị trí mới hấp dẫn. Bạn có thể cân nhắc sử dụng Facebook Graph Search để tìm ra ứng viên dựa vào vị trí địa lí, nghề nghiệp hoặc cả trường đại học. TopDev sẽ gợi ý giúp bạn một số ví dụ sau:
UX/UI Designer sống ở Thành phố Hồ Chí Minh
Java Developer làm việc ở A (A có thể là đối thủ cạnh tranh của bạn)
Một khi bạn tìm thấy được các ứng viên thú vị, bạn có thể nhắn tin họ qua Facebook và dần tiếp cận họ qua LinkedIn. Tuy nhiên, TopDev tin rằng bạn nên khám phá ra những mutual connections bạn có, và nhờ họ gửi lời giới thiệu tới các ứng viên. Ứng viên sẽ cảm thấy tin cậy hơn khi nhận được lời giới thiệu từ những người họ quen biết đấy.
Cách đăng tin tuyển dụng trên Facebook hiệu quả
Chọn đúng nhóm đăng tin
Tại sao chọn đúng nhóm đăng tin lại là một cách đăng tin tuyển dụng hiệu quả trên Facebook? Đơn giản, vì các hội nhóm trên Facebook thật sự là một sản phẩm tiềm năng. Ngày càng nhiều các group đăng tin tuyển dụng nhận được sự quan tâm lớn. Nhiều cộng đồng được xây dựng và phát triển về nội dung nhằm tổng hợp, chia sẻ các kiến thức bổ ích về nhiều lĩnh vực khác nhau.
Facebook thật sự là kênh giúp nhà tuyển dụng nhiều trong việc tạo cầu nối tiếp cận các ứng viên. Thế nhưng, với sự gia tăng chóng mặt về số lượng group khiến chúng ta hoài nghi về tính hiệu quả của việc tuyển dụng thông qua mạng xã hội. Vì thực tế cho thấy, các group chất lượng, đảm bảo tính chuyên nghiệp và format đăng tin chính thống, xác thực về độ chuyên môn thì có nhưng vẫn cần nhà tuyển chọn sàng lọc.
Tập trung triển khai tuyển dụng đúng group Facebook
Việc đúng insight luôn quan trọng cho dù bạn làm bất kỳ một công việc nào. Chính việc đúng định hướng, bạn sẽ tạo ra được một kế hoạch tiếp cận tuyển dụng qua mạng xã hội hiệu quả.
Bạn không thể đăng tin tuyển dụng về các vị trí IT, Freelancer IT trong một group về Nhân sự HR hay Content Marketing được. Nó thật sự không hiệu quả, khiến bạn tốn thời gian và cả những công sức. Do vậy, điều bạn cần lưu tâm trước khi đăng tin tuyển dụng là: Tìm hiểu xem những hội nhóm đó họ đăng tin với những tiêu đề tuyển dụng về chuyên môn, lĩnh vực ngành nghề nào?
Ngoài ra, bạn có thể chú ý nhiều hơn đến cách thức họ đăng tuyển các vị trí theo thứ tự nào, thời gian ra sao.
Nội dung đặc hay loãng, thông tin nhiều hay ít; tiêu đề tuyển dụng có ấn tượng, thu hút hay không. Không những thế, bạn có thể thử đặt mình là ứng viên thì liệu có bị nội dung đăng của họ lôi cuốn hay không? Nếu có thì đâu là yếu tố tạo điểm ấn ở bạn? Nếu không, bạn hãy cố tìm ra những chỗ chưa hoàn hảo, làm hạn chế hoặc ảnh hưởng lớn đến chất lượng của việc truyền tải thông điệp tuyển dụng đến ứng viên.
Hãy nhớ phải lựa chọn cho đúng, tránh những group không đúng lĩnh vực. Chọn sai groups sẽ làm bạn lạc hướng so với định hướng ban đầu.
Hình ảnh – Visual có giá trị tạo dấu ấn thẩm mỹ cho việc tuyển dụng hiệu quả trên Facebook
Hình ảnh là một yếu tố quan trọng giúp cho bài đăng tuyển dụng qua mạng xã hội của bạn thêm cuốn hút. Một bài đăng không hình ảnh sẽ làm giảm tính tiếp cận, khiến mẫu tin trở nên nhàm chán với hàng loạt các con chữ xếp nối dài với nhau. Bạn có thể nhận thấy qua một cuộc khảo sát nhỏ, cùng một nội dung những bài có ảnh sẽ thu hút lượt tương tác, sự quan tâm tự bạn đọc nhiều hơn.
Do vậy, có thể nhận thấy, chiến lược về nội dung cần được tối ưu khi buộc phải có sự kết hợp với mặt hình thức – visual. Không thể phủ nhận, hình ảnh có ý nghĩa lớn đối với chất lượng truyền tải thông tin tuyển dụng. Cụ thể, bài đăng tuyển dụng trên Facebook của bạn sẽ đạt hiệu quả cao hơn do nhận được sự quan tâm, chia sẻ từ người xem. Đó là một tín hiệu tích cực.
Chính vì lẽ đó, các nhà tuyển dụng cần tập trung và đẩy mạnh phát triển mặt visual bên cạnh tối ưu hoá nội dung tuyển dụng. Hình ảnh không những đẹp, mà nó còn phải đa dạng. Một số hình thức visual bạn có thể tham khảo là ảnh có kèm chữ ngắn, hình ảnh mô tả minh họa, hình ảnh dạng hình ảnh thông tin – infographic,… Hoặc bạn có thể sáng tại hơn khi sử dụng các phông chữ đẹp, tạo sự bắt mắt cho người đọc tin.
Hiệu quả bất ngờ từ icon
Bạn đã từng nghe về việc sử dụng emoji, các icon trên bài social Facebook của mình chưa? Nhiều nhận định cho rằng việc sử dụng các icon trong các bài đăng tuyển dụng dường như là không được nghiêm túc.
Tuy nhiên, thực tế cho thấy các icon có ý nghĩa rất hữu ích nếu được áp dụng một cách đúng chỗ, hợp nội dung. Các icon với nhiều hình tượng mang các biểu trưng ý nghĩa khác nhau. Nó làm một hệ thống tổ hợp vô cùng đa dạng. Nếu được sử dụng hợp lý ứng với thông điệp sẽ tao ra những ảnh hưởng tích cực; thậm chí là dấu ấn mạnh mẽ cho các ứng viên tiềm năng.
Thực tế khi xem xét các bài đăng tuyển dụng hiệu quả trên facebook, hơn 80% bài viết đều có các icon. Tùy theo đặc tính, giọng điệu, văn phong của bài tuyển dụng, thì các icon sẽ được lựa chọn sao cho mang lại một hiệu quả cao nhất cho việc tuyển dụng qua mang xã hội.
Và đặc biệt, bạn nên lưu ý rằng không nên lạm dụng các icon. Điểu này sẽ tạo ra một điểm trừ lớn, gây tác dụng ngược lại cho việc tuyển dụng. Quá nhiều icon sẽ cho ứng viên cảm giác bài tin tuyển dụng trở nên loạn thông tin, khó nắm bắt. Từ đó, bài tuyển dụng sẽ trở nên vô nghĩa.
Tuyển dụng sáng tạo
Cách đăng tin tuyển dụng trên Facebook hiệu quả sẽ không giới hạn cho sự sáng tạo. Sự sáng tạo sẽ giúp bạn tìm ra những cách thức đăng bài tuyển dụng phù hợp hơn. Đó có thể là sự sáng tạo tùy hứng. Nhưng vẫn phải đảm bảo nằm trong các giới hạn cho phép. Tính hấp dẫn ứng viên luôn là thước đo quan trọng.
Tuyển dụng sáng tạo đòi hòi sự kết hợp tuyệt vời giữa hình thức và nội dung. Sáng tạo không cần đi quá xa, nó, chỉ cần bám sát mục tiêu làm thế nào để tăng tính hiệu quả tuyển dụng thì bạn sẽ có cách thức sáng tạo phù hợp. Sáng tạo rất da dạng.
Đó có thể là một hình ảnh kèm nội dung đính kèm, các hình ảnh với phông chữ sinh động, màu sắc hài hóa, tăng tính liên kết, dạng video có nhạc, GIF và những hiệu ứng linh động khác nhau,… Khi nhiều doanh nghiệp áp dụng hình thức này, nó trở nên không còn đơn lẻ mà sự cạnh tranh bắt đầu tăng lên. Và làm cách nào để tăng tính nhận diện thương hiệu tuyển dụng, nó là bài toàn lớn về mareting sáng tạo.
Chất lượng vẫn hơn số lượng
Nếu chiến lược đủ dài hạn và bản thân các cá nhân/tổ chức đủ tầm nhìn thì việc cân nhắc đường đi nước bước trong chu trình tuyển dụng là rất quan trọng. Có thể đối với một doanh nghiệp hoàn toàn mới, họ chưa có sự nhận diện với ứng viên, thì giai đoạn đầu thật sự quan trọng.
Dù chắc chắn rằng chất lượng quan trọng hơn. Nhưng, để tăng tính nhận diện, chúng ta nên đầu tư nội dung vào giai đoạn đầu. Và tất nhiên, nó phải có chỉnh thể, có tổ chức, không mơ hồ. Khi mọi thứ đã ổn, ứng viên đã biết rõ về định hướng của tổ chức bạn là gì, thì lúc đó việc tiếp cận cần được đẩy lên một mức nâng cao hơn.
Bạn cần giảm thiểu các bài đăng nội dung chung chung. Hãy tập trung khai thác nhiều nội dung khác nhau. Tin tuyển dụng không quá dài nhưng không được rỗng. Khi đọc xong tin tuyển dụng, tiêu đề tuyển dụng, ít nhất ứng viên phải nắm bắt được những gì doanh nghiệp yêu cầu, đâu là các kỹ năng cần phải có.
Hãy đảm bảo các bài đăng tuyển dụng qua mạng xã hội của bạn phải có logic, trình tự rõ ràng và có sự liên kết chung với nhau. Không nên đăng bài với tần suất dày đặc. Ứng viên họ sẽ nghĩ đó là spam, hoặc các nguồn tin về tuyển dụng kém tin cậy. Quan trọng là nên phân ra các khung giờ cụ thể và phải có kế hoạch đăng bài hợp lý. Có thế, bạn mới thật sự đạt được cái gọi là tuyển dụng hiệu quả trên Facebook.
Những mẫu đăng tin và tiêu đề tuyển dụng hiệu quả trên Facebook
Phối hợp với đồng nghiệp thực hiện một hoặc một số nhóm công việc sau:
Thu thập và làm sạch dữ liệu:
Tìm hiểu nắm bắt hệ thống thông tin quản lý MIS tại BIDV và các hệ thống cấp dữ liệu gốc như corebanking, các chương trình ngoài corebanking.
Nghiên cứu đề xuất thu thập dữ liệu, dữ liệu lớn từ các nguồn dữ liệu khác ngoài dữ liệu sẵn có kể cả dữ liệu bên ngoài BIDV để phục vụ cho phân tích dữ liệu.
Xử lý và làm sạch dữ liệu từ các nguồn cung cấp dữ liệu.
Thu thập các thông tin qua các kênh mạng xã hội (Bao gồm thông tin tài chính và phi tài chính).
Tham gia xây dựng và quản lý hệ thống báo cáo cho Trung tâm ngân hàng số
Tham gia các dự án, nhóm làm việc liên quan đến phân tích dữ liệu ứng dụng vào các giải pháp, sáng kiến ngân hàng số.
Khai thác các hệ thống dữ liệu sẵn có để phục vụ nhu cầu báo cáo, phân tích, ra quyết định quản lý của Trung tâm Ngân hàng số.
Thực hiện các báo cáo đột xuất.
Nghiên cứu, đề xuất và tự động hóa công tác báo cáo.
Xây dựng và phát triển các mô hình dữ liệu
Đề xuất xây dựng, lựa chọn, ứng dụng các mô hình phân tích dữ liệu cho các hoạt động nghiệp vụ. Các mô hình phân tích dữ liệu tập trung vào lĩnh vực phân nhóm khách hàng để xác định khách hàng mục tiêu cho các chiến dịch marketing, chiến dịch bán chéo sản phẩm, chào bán sản phẩm dịch vụ ngân hàng cho khách hàng có nhu cầu. Các sản phẩm dịch vụ chính cần chào bán hoặc quảng bá: tài khoản thanh toán, cho vay, huy động vốn, dịch vụ ngân hàng điện tử, bảo hiểm, thẻ.
Sử dụng các mô hình thống kê vào việc phân tích dữ liệu. Từ đó đưa ra các đề xuất nhằm cải thiện chất lượng và làm giàu dữ liệu.
Kiểm định, đánh giá và cải tiến mức độ hiệu quả, ổn định của các mô hình (Thực hiện các A/B testing, kiểm định, đánh giá).
Đề xuất các sáng kiến cho Trung tâm Ngân hàng số dựa trên các nội dung phát hiện được trong quá trình phân tích dữ liệu.
Nghiên cứu đề xuất cách thức khai thác, phát triển các mô hình phân tích phù hợp với các loại hình dữ liệu phi cấu trúc, dữ liệu hình ảnh, dữ liệu âm thanh.
Nghiên cứu các phương pháp áp dụng dữ liệu lớn vào chấm điểm tín dụng.
Yêu cầu công việc:
Tiêu chuẩn chung:
Là công dân Việt Nam, có hộ khẩu thường trú tại Việt Nam. Tuổi đời không quá 35 tuổi.
Có sức khoẻ để đảm nhiệm công tác.
Có phẩm chất đạo đức tốt, không có tiền án, tiền sự; không trong thời gian bị truy cứu trách nhiệm hình sự, chấp hành án phạt tù, án treo, cải tạo không giam giữ, quản chế, đang chịu biện pháp giáo dục tại địa phương, đang chữa bệnh, cai nghiện…
Tiêu chuẩn cụ thể:
Trình độ chuyên môn
Tốt nghiệp Đại học trở lên tại các trường Đại học trong nước hoặc Đại học tại nước ngoài.
Chuyên ngành: Công nghệ thông tin, toán tin hoặc chuyên ngành phù hợp khác…
Ngoại ngữ:
Cung cấp chứng chỉ tiếng Anh bất kỳ thuộc nhóm chứng chỉ sau (TOEIC, IELTS, TOEFL, chứng chỉ A1, A2, B1, B2, C1, C2 của các đơn vị được phép cấp chứng chỉ). Trường hợp ứng viên thiếu chứng chỉ tiếng Anh, ứng viên sẽ bắt buộc phải bổ sung trong vòng 1 năm kể từ ngày được tuyển dụng.
Kiến thức, kỹ năng, kinh nghiệm:
Có ít nhất 03 năm kinh nghiệm về CNTT liên quan đến phân tích dữ liệu, dữ liệu lớn, các bài toán phân tích khách hàng. Có kinh nghiệm làm việc với Big Data, Data Mining, Machine Learning, AI là một lợi thế.
Nắm bắt, hiểu và sử dụng các kiến thức về toán học và thống kê, các mô hình thống kê (ARIMA, ARCH,….), các mô hình Machine Learning (Logistic, Decision Trees, Ensemble Models, Radom Forests, …), các giao tiếp lập trình phân tích dữ liệu (Data APIs) trong quá trình khai thác và phân tích dữ liệu.
Có kinh nghiệm và hiểu biết sâu về kiến trúc kho dữ liệu, dữ liệu lớn và các công nghệ quản lý thông tin của IBM như PureData System for Analytic, IBM Cognos, IBM Datastage hoặc tương đương khác; nắm được các công nghệ về Hadoop, MapReduce, Apache Spark, các ngôn ngữ lập trình SQL, NoSQL, Python, R, IBM SPSS, KNIME hoặc tương đương phục vụ phát triển, phân tích dữ liệu.
Có kiến thức về ngân hàng (đặc biệt trong hành vi khách hàng và các nghiệp vụ liên quan ngân hàng như tiền gửi, tiền vay, thanh toán, ngân hàng điện tử, thẻ), hiểu dữ liệu Ngân hàng và có kinh nghiệm xây dựng các công cụ thu thập thông tin từ các mạng xã hội là một lợi thế
Mức lượng, chế độ đãi ngộ:
Mức lương được thỏa thuận theo năng lực
Review lương theo kế hoạch chung của công ty
Được hưởng đầy đủ các chế độ phúc lợi của công ty theo quy định
Được tham gia các chế độ BHXH, BHYT theo quy định của nhà nước khi ký hợp đồng lao động
Làm việc trong môi trường trẻ trung, năng động và có nhiều cơ hội được thăng tiến, phát triển bản thân
Mẫu 2: Tuyển dụng Chuyên viên Cao cấp phát triển ứng dụng Back-end Developer
Tuyển Dụng Nhân Tài IT Cùng TopDev Đăng ký nhận ưu đãi & tư vấn về các giải pháp Tuyển dụng IT & Xây dựng Thương hiệu tuyển dụng ngay!
Hotline: 028.6273.3496 – Email: contact@topdev.vn
Dịch vụ: https://topdev.vn/page/products
Việc mua sắm các thiết bị công nghệ thường sẽ chiếm nhiều nhất trong các phần ngân sách của bạn. Tuy nhiên, để tiết kiệm được chi phí mua sắm và tận hưởng những ưu đãi hấp dẫn, bạn có thể sử dụng ShopBack – một nền tảng mua sắm trực tuyến phổ biến. Trong bài viết này, chúng ta sẽ khám phá những lợi ích của việc sử dụng ShopBack khi mua sắm thiết bị công nghệ, cùng với các tips hữu ích để tiết kiệm chi phí.
1. Lợi ích khi sử dụng ShopBack để mua sắm
ShopBack mang lại nhiều lợi ích cho người dùng khi mua sắm thiết bị công nghệ. Đầu tiên, bạn sẽ luôn nhận được hoàn tiền thật đến 30% khi mua sắm thông qua ShopBack.Khi bạn mua sắm thiết bị công nghệ từ các đối tác của ShopBack như Samsung, Dyson,LocknLock, Anker,.. , bạn sẽ nhận được hoàn tiền lên đến 30% trong tài khoản ShopBack. Và sau khi bạn có đủ 50.000đ trong Số Dư Khả Dụng, bạn có thể rút hoàn tiền này về tài khoản ngân hàng của mình và sử dụng để tiếp tục mua sắm. Điều này giúp bạn tiết kiệm được một khoản tiền đáng kể trong quá trình mua sắm.
Ngoài ra, ShopBack còn tổ chức các thử thách và chương trình khuyến mãi đặc biệt. Thử thách giúp bạn nhận thêm tiền thưởng khihoàn thành các nhiệm vụ nhất định, từ việc check-in tại app cho đến mua hàng dựa trên từng điều kiện trong thử thách. Tham gia các thử thách này không chỉ giúp bạn tiết kiệm tiền, mà còn mang lại niềm vui và thách thức trong quá trình mua sắm.
2. Các thương hiệu điện tử/công nghệ phổ biến và cách mua sắm thông qua ShopBack để nhận hoàn tiền
ShopBack kết nối người dùng với các thương hiệu điện tử và công nghệ phổ biến. Dưới đây là một số thương hiệu nổi tiếng mà bạn có thể mua sắm thông qua ShopBack:
2.1 Thương hiệu điện tử
Samsung: ShopBack là nơi bạn có thể mua sắm các sản phẩm của Samsung như điện thoại di động, máy tính bảng, TV, và nhiều thiết bị công nghệ khác với mức hoàn tiền lên đến 4%, và vào những dịp ưu đãi lớn, ShopBack có thể tăng hoàn tiền lên đến 10%.
Dyson, Anker, Nguyễn Kim, Coway… cũng là các đối tác mà khi mua sắm bạn có thể nhận hoàn tiền từ ShopBack. Ngoài ra, ShopBack còn liên kết với rất nhiều các thương hiệu điện tử chính hãng tại Shopee, Lazada, Tiki,…Khám phá thương hiệu điện tử tại đây: https://app.shopback.com/CongNghe
2.2 Cách mua sắm thông qua ShopBack
Để mua sắm thiết bị công nghệ thông qua ShopBack, bạn chỉ cần đăng nhập vào tài khoản của mình trên ShopBack, tìm kiếm cửa hàng hoặc thương hiệu mong muốn, và nhấp vào liên kết để được điều hướng sang cửa hàng và mua sắm như bình thường. Tiền hoàn sẽ được ghi nhận trong vòng 48H sau khi bạn thanh toán thành công. Và từ 45-90 ngày tùy vào từng đối tác, tiền hoàn sẽ chuyển sang trạng thái Đã Xác Nhận và bạn có thể rút tiền về tài khoản ngân hàng của mình.
3. Du lịch cũng được hoàn tiền với ShopBack
Không chỉ giới hạn trong lĩnh vực mua sắm, ShopBack đã mở rộng ra mảng du lịch với các thương hiệu nổi tiếng hàng đầu như Traveloka, Agoda, Klook, KKday, Booking.com,… Bạn có thể tận hưởng ưu đãi và hoàn tiền đến 12% khi đặt phòng khách sạn hoặc đặt tour du lịch thông qua các đối tác của ShopBack trong ngành du lịch, khám phá tại https://app.shopback.com/VuTruViVu. Việc sử dụng ShopBack không chỉ giúp bạn tiết kiệm chi phí mua sắm mà còn mang đến cho bạn những trải nghiệm du lịch thú vị với mức giá ưu đãi.
Hãy khám phá ShopBack và tải app https://app.shopback.com/vnm/partner/topdevngay hôm nay để tận hưởng những ưu đãi hấp dẫn và tiết kiệm hơn với hoàn tiền khi mua sắm, cũng như trải nghiệm các dịch vụ du lịch thú vị với giá cả phải chăng và đa dạng lựa chọn bạn nhé.
Tham khảo thêm nhiều việc làm IT hấp dẫn tại TopDev!
Bài viết được sự cho phép của tác giả Tống Xuân Hoài
Vấn đề
Tìm ra cách giải quyết vấn đề là một trong những kỹ năng hết sức quan trọng đối với lập trình viên. Thông thường, khi chúng ta làm càng nhiều thì kinh nghiệm càng lên cao. Lúc này đối mặt với những bài toán tương tự mà có thể nhanh chóng tìm ra hướng giải quyết.
Có nhiều cách để học hỏi kinh nghiệm, một trong số đó là chịu khó tìm kiếm và đọc nhiều bài viết, tài liệu trên mạng. Nhiều khi kiến thức ta thu nạp được chưa cần thiết ngay lúc này, nhưng đến một lúc nào đó nó có thể phát huy tác dụng. Hoặc ít ra, đọc để trong đầu ta tự thốt lên: “À hóa ra với trường hợp này thì chúng ta nên xử lý thế này…”.
debonce, throttle và once là ba hàm tiện ích mà qua đó có thể ứng dụng trong rất nhiều trường hợp. Đặc biệt là logic về UI/UX, trải nghiệm người dùng… Bài viết ngày hôm nay, tôi xin phép được trình bày về công dụng cũng như cách sử dụng chúng.
Debounce
Debounce là một kỹ thuật ngăn chặn một chuỗi sự kiện tương tự nhau diễn ra liên tiếp. Thay vào đó, sự kiện tiếp theo chỉ được gọi sau một khoảng thời gian hành động chấm dứt.
Một ví dụ thông dụng nhất mà chúng ta thường gặp đó là tính năng gõ từ khóa vào ô tìm kiếm. Khi nhập kí tự, kết quả tìm kiếm hoặc cụm từ gợi ý hiện ra. Đằng sau quá trình này là một cách xử lý nào đó, ví dụ như gọi API để lấy dữ liệu trước khi người dùng bấm vào nút tìm kiếm hoặc nhấn Enter. Nếu bắt sự kiện keypress thì cứ mỗi lần nhấn phím sẽ gọi một lần API. Như thế quả là lãng phí tài nguyên máy chủ bời vì tốc độ của người gõ là rất nhanh, chưa kể từ khóa họ nhập vào còn chưa đầy đủ. Để xử lý tối ưu trong trường hợp này là chờ một khoảng thời gian người dùng không nhấn nhím nữa thì hãy kích hoạt cuộc gọi API.
Khi đó cứ mỗi 500ms mà người dùng không nhập gì nữa thì triggerCallAPI sẽ được gọi.
Một trường hợp phổ biến khác là sự kiện resize của trình duyệt. Trong quá trình thay đổi kích thước cửa sổ, có nhiều hàm cần chạy để xử lý logic. Nếu cứ gọi hàm liên tục khi resize chắc chắn hiệu năng sẽ bị ảnh hưởng. Lúc đó, chúng ta có thể sử dụng debounce để giải quyết vấn đề này.
Throttle phần nào giống như Debounce. Nghĩa là nó cũng ngăn chặn sự kiện diễn ra liên tiếp, nhưng theo một cách khác so với Debounce.
Nếu Debounce chỉ kích hoạt sự kiện sau một khoảng thời gian mà sự kiện không xảy ra nữa thì Throttle lại chỉ kích hoạt sự kiện sau một khoảng thời gian mà bất kể sự kiện đó có diễn ra hay không. Hay nói ngắn gọn lại là Throttle chỉ cho phép chạy một sự kiện trong mỗi x giây. Sau x giây, lần chạy tiếp theo mới được thực thi nếu nó còn được kích hoạt (trigger).
Bất cứ khi nào cần giới hạn thời gian giữa các lần kích hoạt sự kiện bạn có thể áp dụng Throttle. Ví dụ, ngăn chặn người dùng bấm quá nhanh vào một nút “Submit”.
Nghĩa là triggerCallAPI chỉ được gọi sau mỗi 500ms bất kể người dùng có bấm vào nút bao nhiêu lần đi chăng nữa.
Once
Once chỉ cho phép sự kiện được gọi một lần duy nhất. Once hữu ích trong trường hợp bạn chỉ cho phép người dùng thực hiện một hành động trong phiên truy cập.
Một hàm once có thể giống giống như sau:
functiononce(func) {
let ran = false;
let result;
returnfunction() {
if (ran) return result;
result = func.apply(this, arguments);
ran = true;
return result;
};
}
Ví dụ sử dụng trong trường hợp nút “Đánh dấu tất cả là đã đọc” của khung thông báo. Người dùng chỉ cần thực hiện bấm vào nút đó một lần trong mỗi phiên.
<button @click="once(triggerCallAPI)">Đánh dấu tất cả là đã đọc</button>
triggerCallAPI chỉ được gọi một lần duy nhất khi người dùng bấm vào button. Các lần tiếp theo, triggerCallAPI sẽ không được kích hoạt.
Tổng kết
Trên đây là 3 hàm debounce, throttle và once với mô tả kèm theo cách sử dụng. Chúng rất thông dụng trong xử lý logic về giao diện người dùng, đến nỗi nhiều thư viện tiện ích đều có mặt của 3 hàm này như là lodash. Việc biết đến cũng như biết cách sử dụng có thể giúp bạn giảm được thời gian giải quyết vấn đề trong những trường hợp tương tự trong bài viết.
Với sự phát triển nhanh chóng của công nghệ thông tin và sự ảnh hưởng mạnh mẽ của cuộc cách mạng công nghiệp 4.0, nhu cầu về nhân lực IT ngày càng tăng cao. Mỗi năm có hàng nghìn kỹ sư CNTT tham gia vào thị trường lao động đầy tiềm năng này. Nhưng nghịch lý thay, các công ty vẫn không tìm được nhân sự IT phù hợp. Vậy vì sao tuyển IT khó đến vậy? Những giải pháp nào để giải quyết vấn đề trên? Tất cả sẽ có trong bài viết này!
Thực trạng hiện nay của thị trường nhân lực IT
Từ trước đến nay, nhu cầu nhân lực ngành CNTT chưa bao giờ “giảm nhiệt”. Theo báo cáo thi trường IT Việt Nam 2022 của TopDev, với tốc độ tăng trưởng như hiện nay thì đến năm 2024 thị trường cần 800.000 lập trình viên. Việt Nam sẽ vẫn thiếu hụt 150.000 – 195.000 lập trình viên / kỹ sư hàng năm.
Vấn đề này đã tạo nên sức ép to lớn cho các nhà tuyển dụng trong quá trình tìm kiếm nhân tài cho doanh nghiệp. Bên cạnh đó, hàng năm vẫn có hơn 50.000 sinh viên tốt nghiệp chuyên ngành CNTT và cả những bộ phận nhân sự trái ngành tham gia vào thị trường IT. Thế nhưng, để tìm được một ứng viên đáp ứng đủ yêu cầu cả về “lượng” lẫn về “chất” thì không mấy dễ dàng. Nguyên nhân của vấn đề này nằm ở cả ứng viên và doanh nghiệp tuyển dụng.
Ở phần tiếp theo chúng ta sẽ tìm hiểu rõ hơn về nguyên nhân của việc vì sao tuyển IT khó và những giải pháp cho vấn đề nan giải này.
Vì sao tuyển IT khó? Nguyên nhân từ đâu?
Nguyên nhân từ ứng viên
1. Thiếu hụt ứng viên chất lượng
Một trong những lý do chính khiến việc tìm kiếm nhân sự IT trở nên khó là sự thiếu hụt nhân sự chất lượng. Các doanh nghiệp thường tìm kiếm những ứng viên có kiến thức chuyên môn sâu, kỹ năng công nghệ cao và kinh nghiệm thực tế. Tuy nhiên, không phải lúc nào cũng dễ dàng tìm được những ứng viên như vậy, đặc biệt là ở một số khu vực với nguồn nhân lực IT hạn chế.
2. Tỷ lệ nhảy việc cao
Nhân sự công nghệ thông tin thông thường có xu hướng tìm kiếm cơ hội mới để tiến xa hơn trong sự nghiệp của họ. Ngay cả khi đang làm việc tại doanh nghiệp nhất định, họ cũng có thể nhận được offer hấp dẫn từ một công ty khác. Điều này làm cho các doanh nghiệp phải đối mặt với việc tìm kiếm và đào tạo nhân sự mới, gây khó khăn trong việc duy trì sự ổn định và sự phát triển của doanh nghiệp.
3. Sự đa dạng trong công việc IT
Lĩnh vực công nghệ thông tin rất đa dạng và phong phú, bao gồm nhiều vị trí và vai trò khác nhau như phân tích hệ thống, phát triển phần mềm, quản trị mạng. Điều này làm cho tuyển dụng trong ngành IT trở nên phức tạp hơn, vì các doanh nghiệp phải tìm kiếm và lựa chọn ứng viên phù hợp với từng vai trò cụ thể.
4. Khả năng ngoại ngữ hạn chế
Ngoại ngữ được coi là một điểm yếu lớn đối với các nhân sự IT. Sự chênh lệch về mức lương và cơ hội giữa những người có ngoại ngữ và những người không có ngoại ngữ là rất lớn. Việc các ứng viên không có ngoại ngữ sẽ khó đáp ứng được hết các yêu cầu công việc, nhất là khi làm việc với các đối tác nước ngoài.
Với một ngành đang phát triển mạnh mẽ như CNTT, các doanh nghiệp đang phải cạnh tranh với nhau để thu hút và giữ chân nhân sự IT giỏi. Các công ty công nghệ lớn và nổi tiếng thường thu hút nhân tài hàng đầu với các chương trình tuyển dụng hấp dẫn. Điều này làm cho việc tuyển dụng của các công ty nhỏ và mới thành lập trở nên khó khăn hơn.
2. Phương pháp tuyển dụng chưa phù hợp
Quá trình tuyển dụng cồng kềnh, yêu cầu nhiều thủ tục phức tạp và quá trình xử lý chậm có thể khiến những ứng viên tiềm năng mất lòng kiên nhẫn và chuyển sang tìm việc ở những nơi có quy trình tuyển dụng linh hoạt hơn. Việc cải thiện phương pháp tuyển dụng có thể giúp gia tăng hiệu suất tuyển dụng và thu hút ứng viên xuất sắc hơn.
Một yếu tố quan trọng cần được xem xét là thương hiệu tuyển dụng của doanh nghiệp. Nếu một doanh nghiệp không nổi tiếng hoặc không có danh tiếng tốt trong lĩnh vực công nghệ thông tin, việc thu hút nhân sự chất lượng sẽ trở nên khó khăn hơn. Để giải quyết vấn đề này, các doanh nghiệp cần đầu tư vào quảng cáo, xây dựng thương hiệu tốt và phát triển mối quan hệ tốt với cộng đồng IT để thu hút nhân sự có tiềm năng.
Để giải quyết câu hỏi vì sao tuyển IT khó các doanh nghiệp cần áp dụng đồng thời nhiều phương pháp để tìm được ứng viên phù hợp, Vậy phương pháp đó là gì?
1. Tập trung xây dựng thương hiệu tuyển dụng
Xây dựng thương hiệu tuyển dụng mạnh mẽ đóng vai trò quan trọng trong việc thu hút nhân tài IT. Một cách để xây dựng thương hiệu tuyển dụng hiệu quả là thông qua việc phát triển một trang web tuyển dụng chuyên nghiệp và hấp dẫn.
Ngoài ra, việc sử dụng các kênh truyền thông xã hội như Facebook và LinkedIn cũng là một phương tiện hiệu quả trong xây dựng thương hiệu tuyển dụng. Các doanh nghiệp có thể tận dụng các tính năng của các mạng xã hội này như việc đăng tin tuyển dụng, chia sẻ thông tin về công việc và nêu bật những thành tựu của doanh nghiệp để thu hút nhân tài.
2. Tạo dựng văn hóa chia sẻ trong cộng đồng IT
Ngành IT với đặc thù thay đổi khá nhanh, cứ 3 đến 6 tháng lại có một công nghệ mới ra đời, đòi hỏi developer cũng phải luôn phải học hỏi cập nhật công nghệ mới và quan tâm đến lộ trình phát triển công nghệ của mình. Các câu hỏi của họ thường xuyên là “Công ty này có stack phù hợp với mình hay không?”, “Đội ngũ tech có cởi mở với các công nghệ mới không?”, “Mình sẽ phát triển được gì sau khi làm với họ một thời gian?”…
Vậy giải pháp nào cho các ứng viên tốt, tiềm năng và không chủ động tìm việc ngoài kia?
Cử người làm diễn giả ở các meetup, viết blog chia sẻ kiến thức đều đặn, tổ chức hackathon/cuộc thi/giải thưởng, tham gia tech event, tham gia phỏng vấn của các trang tin công nghệ…là những hoạt động rất tốt giải đáp các câu hỏi này của ứng viên tiềm năng.
Hãy luôn làm đều đặn, ít nhất mỗi tháng có 1 hoạt động dù lớn hay nhỏ, để khi họ phát sinh nhu cầu chuyển việc, công ty của bạn là một trong những lựa chọn đầu tiên, thậm chí chưa cần đến các tin đăng tuyển dụng!
Sự kiện Vietnam Web Summit diễn ra hằng năm do TopDev tổ chức
3. Tập trung vào các ngách trọng điểm
Mỗi doanh nghiệp đều có đặc thù riêng, có doanh nghiệp làm outsourcing, làm saas, làm về AI, bigdata, blockchain…Hãy tập trung vào các ngách khó tuyển nhất trong kiến trúc công nghệ của doanh nghiệp. Ví dụ: Nếu doanh nghiệp bạn làm Saas về thương mại điện tử với giao diện web bằng PHP nhưng có ứng dụng AI/Machine Learning/Bigdata để tăng trải nghiệm, tối ưu tỷ lệ chuyển đổi…Hãy tập trung làm EB về ngách AI/ML này. Khi bạn làm tốt, tự khắc các ứng viên về web cũng sẽ biết đến bạn.
Nếu có điều kiện, bạn nên làm việc với dịch vụ EB chuyên nghiệp (Như TopDev hiện đang làm với nhiều công ty IT hàng đầu VN), ngoài việc phân phối nội dung blog, phỏng vấn đến rộng rãi cộng đồng developer qua email marketing, mạng xã hội, trang tin công nghệ…họ còn giúp bạn tìm những diễn giả chất lượng đến từ bên ngoài doanh nghiệp và đảm bảo sự kiện của bạn được đông đảo developer tham dự.
4. Áp dụng công nghệ vào quá trình tuyển dụng
Sử dụng các công cụ và hệ thống công nghệ như phần mềm quản lý ứng viên, trang web tuyển dụng, và trí tuệ nhân tạo (AI) để tiết kiệm thời gian và tăng tính chính xác trong quá trình tìm kiếm và đánh giá ứng viên. Công nghệ có thể giúp tự động hóa nhiều giai đoạn trong quá trình tuyển dụng.
Kết luận
Hy vọng qua bài viết trên bạn đã tìm được câu trả lời cho câu hỏi “Vì sao tuyển IT khó?” cũng như tìm được giải pháp để giải quyết vấn đề nan giải này cho doanh nghiệp của mình. Với các giải pháp thích hợp, doanh nghiệp có thể thu hút những chuyên gia IT tài năng và xây dựng đội ngũ mạnh mẽ để đối mặt với những thách thức và cơ hội trong tương lai. Theo dõi TopDev để cập nhật thêm nhiều kiến thức mới về lập trình, thị trường IT và các công nghệ mới nhất bạn nhé!
Khi ứng dụng cần thông tin từ người dùng, ví dụ như điền mẫu đơn đăng ký khóa học, đăng ký đặt mua hàng, viết bình luận… Phổ biến nhất là sử dụng form. Form là tập hợp component input như: input fields, checkbox… để người dùng cung cấp thông tin.
Tuy nhiên, vấn đề bị spam sẽ nảy sinh nếu không có biện pháp ngăn chặn. Ứng dụng sẽ bị spam hàng loạt thông tin rác bởi các bot.
Tất nhiên, cái gì cũng có cách khắc phục hết. Giải pháp hiệu quả nhất là tích hợp công cụ Google reCaptcha vào form.
Trong bài viết này, mình sẽ hướng dẫn cách tích hợp Google reCaptcha đơn giản nhất cho các ứng dụng được viết bằng React.
Google reCaptcha là gì
Google ReCaptcha là phần mềm do Google phát hành, mục đích là hạn chế việc spam thông tin khi đăng ký form. Đồng thời, Google ReCaptcha cũng giúp tăng cường bảo mật website, hạn chế bị spam thông tin tự động vào hệ thống.
Hiện tại, Google ReCaptcha được phát hành tới phiên bản thứ 3. Trong đó:
Google reCaptcha v1: sử dụng các ký tự bị bóp méo nhất có thể, chỉ có người tinh mắt mới đọc được, hạn chế tối đa các con robot có thể đọc được.
Google reCaptcha v2: Sử dụng hình ảnh như vạch kẻ đường, biển bảo, đèn giao thông, nhận diện đồ vật…
Google reCaptcha v3: là phiên bản mới nhất, phiên bản này được quảng bá là rất thông minh, người dùng nhiều khi không cần phải đọc ký tự méo mó, không cần chọn hình ảnh như yêu cầu… Nó sẽ tự động nhận biết bạn là người hay robot. Chỉ cần tick vào checkbox là được.
Xem video giới thiệu về Google reCaptcha v3 từ Google ngay bên dưới.
Tại sao website nên sử dụng Captcha?
Ngày này, người dùng đã quá quen thuộc với Captcha. Hầu hết các hệ thống lớn đều sử dụng Captcha như một công cụ để ngăn chặn spam, tấn công phá hoại…
Ví dụ với Google Search, khi bạn tìm kiếm với nhiều từ khóa lạ, từ khóa lặp lại… Google sẽ nghi ngờ bạn là robot và yêu cầu nhập Captcha. Bạn đã bao giờ gặp phải trường hợp này chưa?
Dưới đây là những lý do nên sử dụng Captcha cho hệ thống website của bạn:
Chống Spam: Đây là hình thức tấn công đơn giản nhất nhưng cũng gây khó chịu nhất. Ngay như website VNTALKING nhỏ xinh, mỗi ngày cũng nhận hàng trăm comment kiểu spam của mấy bạn tây balo. Với Google ReCaptcha, mình đã chặn được hết.
Bảo vệ dữ liệu: Captcha giúp ngăn ngừa các truy cập tự động từ máy tính hay robot để bảo vệ những thông tin quan trọng trong website.
Đảm bảo tương tác thực: Khi bạn muốn nhận thông tin từ khách hàng, từ người dùng thì những thông tin đó phải được thực hiện từ người thật, chứ không phải là mấy con robot. Chỉ có con người mới mang lại yêu thương cho nhau mà thôi.
Nếu bạn chưa đăng nhập tài khoản Gmail thì đăng nhập đi nhé.
Bước 2: Điền thông tin đăng ký reCAPTCHA theo mẫu như bên dưới.
Với mỗi phiên bản Captcha sẽ cần điền thông tin khác nhau, cụ thể như sau:
Bạn sẽ có 3 tùy chọn như sau nếu đăng ký Google reCAPTCHA v2:
“I’m not a robot” Checkbox: Tùy chọn này sẽ hiện ra một check box để người dùng click chuột vào “Tôi không phải robot”, phần còn lại cứ để Google lo. Đôi khi, Google không thể xác định được tự động người dùng là bot hay người thì nó sẽ hiển thị ảnh để người dùng xác nhận lại.
Invisible reCAPTCHA badge: Người dùng không cần click vào check box vì quá trình xác thực sẽ được Google làm tự động và ẩn ở background.
reCAPTCHA Android: Lựa chọn này dành cho bạn nếu muốn tích hợp captcha cho ứng dụng Android.
Đăng ký Google Captcha v2
Trong bài viết này, mình chọn như trong hình trên. Sau đó nhớ tick vào ô: “Accept the reCAPTCHA Terms of Service“.
Cuối cùng thì nhấn “Submit” để lấy API Key.
Bạn lưu API Key lại để sử dụng ở bưới tiếp theo.
Tích hợp Captcha trong React
Có nhiều cách để tích hợp Captcha trong React. Để thực hiện đơn giản nhất, chúng ta sử dụng thư viện “react-recaptcha-google”.
Hãy lưu ý: Trong bài viết này, mình hướng dẫn các bạn tích hợp Google Captcha v2. Nếu muốn sử dụng Google Captcha v3, bạn có thể sử dụng thư viện react-google-recaptcha-v3, cách thực hiện tương tự nhé.
Cài đặt
Sử dụng npm:
npm install react-recaptcha-google --save
Sử dụng yarn:
yarn add react-recaptcha-google
Khởi tạo ReCaptcha – loadReCaptcha()
Hàm loadReCaptcha() phải được gọi trong main component của ứng dụng. Chúng được khuyến khích gọi trong componentDidMount() của App.js
Ví dụ:
import{ loadReCaptcha } from 'react-recaptcha-google'...componentDidMount(){ loadReCaptcha();}
Sau khi khởi tạo xong, bạn có thể gọi ReCaptcha ở bất kỳ component. Ưu điểm của các khởi tạo này là bạn có thể kiểm soát được khi nào cần tải ReCaptcha và khi nào muốn ngăn chặn việc gọi nó không cần thiết.
Tích hợp <ReCaptcha/> vào một component cụ thể
import React,{ Component } from 'react';import{ ReCaptcha } from 'react-recaptcha-google'class ExampleComponent extends Component { constructor(props, context){ super(props, context); this.onLoadRecaptcha=this.onLoadRecaptcha.bind(this); this.verifyCallback=this.verifyCallback.bind(this); } componentDidMount(){ if(this.captchaDemo){ console.log("started, just a second...") this.captchaDemo.reset(); } } onLoadRecaptcha(){ if(this.captchaDemo){ this.captchaDemo.reset(); } } verifyCallback(recaptchaToken){ // Here you will get the final recaptchaToken!!! console.log(recaptchaToken,"<= your recaptcha token") } render(){ return( <div> {/* You can replace captchaDemo with any ref word */} <ReCaptcha ref={(el)=>{this.captchaDemo= el;}} size="normal" data-theme="dark" render="explicit" sitekey="<ĐIỀN SITE KEY VÀO ĐÂY>" onloadCallback={this.onLoadRecaptcha} verifyCallback={this.verifyCallback} /> <code> 1. Add <strong>your site key</strong> in the ReCaptcha component. <br/> 2. Check <strong>console</strong> to see the token. </code> </div> ); };};exportdefault ExampleComponent;
Trong đoạn code có một số điểm mình muốn giải thích thêm:
data-theme: Bạn có thể tùy chọn theme của reCaptcha là “dark” or “light”.
sitekey: Là API Key mà bạn đã nhận được lúc đăng ký với Google.
Hãy lưu ý: Mỗi API Key tương ứng duy nhất với một domain mà bạn đăng ký trước đó. Nếu domain website thay đổi thì cần đăng ký lại.
Ok, vậy là xong rồi đấy.
Như vậy mình đã hướng dẫn xong cách tạo google reCAPTCHA để xác thực người dùng.
Mình hi vọng, bài viết này có ích cho dự án của bạn. Hẹn gặp lại ở bài viết tiếp theo nhé.
Bài viết được sự cho phép của tác giả Tống Xuân Hoài
Vấn đề
Pattern hay tên gọi đầy đủ Design Pattern là một mẫu thiết kế hoặc một giải pháp chung để giải quyết một vấn đề nào đó. Nó được tổng hợp và sử dụng bởi rất nhiều người trong việc giải quyết các vấn đề tương tự nhau. Khi giải quyết một bài toán, các Pattern thường được xem xét hoặc khuyên dùng. Chính vì thế biết được nhiều mẫu thiết kế, bạn càng có thêm nhiều ý tưởng để giải quyết bài toán sao cho phù hợp nhất.
Circuit Breaker Pattern là một mẫu thiết kế lấy cảm hứng từ “cầu dao điện”. Khi xảy ra hiện tượng đoản mạch hoặc quá tải do quá nhiều thiết bị tiêu thụ điện, cầu dao sẽ tự ngắt để đảm bảo không xảy ra nguy cơ cháy nổ. Tương tự như trong hệ thống phần mềm, nó đóng vai trò như là một “bộ ngắt” khi có một lỗi ồ ạt xảy ra trong luồng xử lý.
Bài viết ngày hôm nay, chúng ta hãy tìm hiểu xem Circuit Breaker là gì và nó thường được sử dụng trong những trường hợp nào, cũng như cách triển khai trong Node.js như thế nào nhé.
Circuit Breaker Pattern là gì?
Circuit Breaker Pattern là một mẫu thiết kế phần mềm được sử dụng để xử lý các lỗi liên quan đến các cuộc gọi tới các dịch vụ từ các thành phần khác nhau trong một hệ thống phân tán. Khi một dịch vụ không sẵn sàng hoặc bị lỗi, Circuit Breaker Pattern giúp tăng tính ổn định và độ tin cậy của hệ thống bằng cách ngắt kết nối tới dịch vụ đó và sử dụng một cơ chế phục hồi thay thế.
Circuit Breaker thường được sử dụng trong các trường hợp khi xử lý logic có liên quan đến các cuộc gọi API hoặc một cái gì đó tương tự đến các dịch vụ bên ngoài (hệ thống phân tán). Vì đặc thù của hệ thống phân tán là nguy cơ xảy ra lỗi giữa các dịch vụ có thể đến bất kì lúc nào, thế nên chúng ta luôn phải có phương án xử lý lỗi hoặc chuyển hướng đến các dịch vụ dự phòng. Circuit Breaker giúp tăng tính ổn định của hệ thống bằng cách ngắt kết nối tới dịch vụ bị lỗi và sử dụng một cơ chế phục hồi thay thế như chuyển sang một dịch vụ khác hoặc nhanh chóng trả về lỗi mà không cần phải chờ phản hồi. Ngoài ra nó còn giảm tải cho các dịch vụ khi phát hiện ra một dịch vụ đang bị quá tải. Hay nói tóm lại, Circuit Breaker cung cấp một cơ chế xử lý lỗi phát sinh giữa các dịch vụ trong hệ thống phân tán.
Nguyên lý hoạt động của Circuit Breaker rất đơn giản. Nó dựa trên 3 trạng thái của “bộ ngắt mạch” là Closed, Open và Half-Open.
Khi ở trạng thái bình thường thì mạch được đóng, tức là mạch đang ở trạng thái Closed, các yêu cầu đang được xử lý tự do và mọi thứ hoạt động như mong đợi. Trạng thái Closed sẽ chuyển qua Open nếu như số lượng các yêu cầu được xử lý tăng đột biến hoặc một lỗi xảy ra vượt quá ngưỡng mà mạch đề ra.
Khi đó, mạch sẽ tự ngắt, lúc này mạch bị “hở” và nó đang ở trạng thái Open. Các yêu cầu sau đó sẽ không thể tiếp tục thực hiện cuộc gọi đến dịch vụ phân tán. Thay vào đó mạch sẽ trả về lỗi ngay lập tức để báo cho chúng biết để không mất thời gian chờ xử lý.
Sau một khoảng thời gian nhất định, mạch sẽ thử mở lại cho một vài yêu cầu để kiểm tra tính khả dụng của các dịch vụ. Trạng thái này gọi là Half-Open. Nếu mọi thứ bình thường trở lại, mạch sẽ trở về trạng thái Closed, lúc này hệ thống của chúng ta sẽ trở lại như ban đầu. Còn nếu không, mạch sẽ tiếp tục Open cho đến lần kiểm tra tiếp theo.
Có một số vấn đề cần lưu ý khi triển khai Circuit Breaker là xác định được ngưỡng để ngắt mạch và ngưỡng thử lại để mở mạch. Bởi tùy vào thiết kế của từng hệ thống mà chúng ta cần xác định được chúng sao cho hợp lý và tối ưu nhất.
Sau khi hiểu được nguyên lý, chúng ta có thể tự triển khai một bộ ngắt mạch cho riêng mình. Hoặc tìm cho mình một thư viện có độ tin cậy cao để đẩy nhanh quá trình phát triển.
Triển khai Circuit Breaker trong Node.js
opossum là một thư viện hỗ trợ Node.js triển khai một bộ ngắt mạch. Với số lượng sử dụng tại thời điểm viết bài là hơn 230k lượt tải trong tuần thì đây là thư viện có độ tin cậy cao nhất nhì trên npm.
Cách sử dụng tương đối cơ bản, bạn cần thiết lập một vài thông số ngưỡng để ngắt và mở lại mạch, sau đó khởi tạo một đối tượng CircuitBreaker kèm với hàm cần xử lý logic.
Trong ví dụ trên, nếu hàm mất thời gian quá 3s và với số lượng lỗi hơn 50% thì mạch sẽ ngắt. Sau 30s, bộ ngắt mạch sẽ bắt đầu thử lại.
Tổng kết
Circuit Breaker Pattern là một mẫu thiết kế được sử dụng để xử lý các lỗi liên quan đến cuộc gọi đến một dịch vụ khác trong hệ thống phân tán. Một “bộ ngắt mạch” hoạt động dựa trên 3 giai đoạn Closed, Open và Half-Open. Có một số vấn đề cần lưu ý khi triển khai Circuit Breaker là xác định được ngưỡng để ngắt mạch và ngưỡng thử lại để mở mạch. Sau khi hiểu được cơ chế, bạn có thể tự triển khai một bộ ngắt mạch cho riêng mình hoặc tìm kiếm và sử dụng các thư viện đáng tin cậy để đẩy nhanh quá trình phát triển.
Data Analyst là gì? Chuyện nghề của một Data Analyst
Đối với bất kỳ lĩnh vực nào, việc phân tích dữ liệu luôn là yếu tố then chốt để đưa ra các đường lối, chiến lược phát triển hợp lí cho việc kinh doanh. Trên thị trường hiện nay, các công việc liên quan đến phân tích số liệu như Data Analysis, Data Science,… luôn là những vị trí “khát” nhân lực nhất. Cơ hội làm việc rộng mở cùng mức thu nhập hấp dẫn là điều khiến nhiều người quan tâm đến công việc này. Vậy Data Analyst là gì? Câu chuyện nghề nghiệp của một Data Analyst ra sao? Hãy cùng tìm hiểu với bài viết dưới đây.
Câu chuyện công việc của một Data Analyst
Data Analyst là gì?
Data Analyst (DA) – chuyên viên phân tích dữ liệu, là công việc được hoạt động gắn liệu với khoa học dữ liệu, nhiệm vụ chính của họ là thu thập, chọn lọc, xử lý và phân tích chuyên sâu dữ liệu thu thập được để phát hiện ra vấn đề, hiện trạng cần giải quyết. Tùy theo mỗi ngành nghề khác nhau, mà dữ liệu Data Analyst xử lý sẽ khác nhau (có thể là số, hình ảnh, hay các dạng data khác) và kết luận được đưa ra sẽ còn dựa trên đặc thù của ngành nghề.
Dưới kết quả phân tích của các Data Analyst, doanh nghiệp có thể đưa ra những kế hoạch phát triển và cải thiện quy trình hoạt động. Do đó, đây được đánh giá là một trong những vị trí có tác động “sống còn” đến thành bại của một doanh nghiệp. Bất kể quy trình làm việc như thế nào, kết quả do Data Analyst đưa ra phải giải quyết được các vấn đề một cách chính xác, nắm bắt đúng trọng tâm để vạch ra cách xử lý. Vậy nên, nhu cầu nhân lực với vị trí này luôn rất cao và yêu cầu nhân lực cũng đặc biệt khắt khe hơn so với các ngành nghề khác.
Quy trình phân tích dữ liệu của Data Analyst
Quá trình phân tích dữ liệu của Data Analyst thường bao gồm các bước cơ bản sau:
1. Xác Định Mục Tiêu
Trước khi bắt đầu phân tích, Data Analyst cần hiểu rõ mục tiêu và câu hỏi cụ thể mà phân tích dữ liệu phải trả lời. Điều này bao gồm việc xác định vấn đề cần giải quyết hoặc các mục tiêu kinh doanh cần đạt được.
2. Thu Thập Dữ Liệu
Dữ liệu có thể được thu thập từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu nội bộ, bảng khảo sát, hệ thống giao dịch, hoặc các nguồn dữ liệu bên ngoài. Data Analyst cần phải đảm bảo rằng dữ liệu thu thập được là đầy đủ và phù hợp với mục tiêu phân tích.
3. Làm Sạch Dữ Liệu
Dữ liệu thô thường chứa lỗi, thiếu sót, hoặc thông tin không nhất quán. Bước này bao gồm việc xử lý các giá trị thiếu, loại bỏ dữ liệu trùng lặp, và chuẩn hóa dữ liệu để đảm bảo tính chính xác và đồng nhất.
4. Khám Phá Dữ Liệu (Exploratory Data Analysis – EDA)
Trong bước này, Data Analyst sẽ thực hiện các phân tích mô tả để hiểu rõ hơn về dữ liệu, bao gồm việc kiểm tra các mô hình phân phối, phát hiện các giá trị ngoại lệ, và đánh giá các mối quan hệ giữa các biến. Các công cụ trực quan hóa dữ liệu như biểu đồ, đồ thị và bảng tổng hợp thường được sử dụng trong bước này.
5. Phân Tích Dữ Liệu
Dựa trên mục tiêu đã xác định, Data Analyst áp dụng các phương pháp phân tích thống kê và kỹ thuật phân tích nâng cao như hồi quy, phân tích cụm (clustering), hoặc phân tích chuỗi thời gian. Bước này nhằm phát hiện các xu hướng, mẫu và mối quan hệ trong dữ liệu.
6. Trực Quan Hóa Dữ Liệu
Dữ liệu phân tích được chuyển thành các biểu đồ, đồ thị, và bảng điều khiển dễ hiểu để giúp các bên liên quan nhanh chóng nắm bắt thông tin. Trực quan hóa dữ liệu giúp trình bày kết quả phân tích một cách rõ ràng và trực quan.
7. Diễn Giải Kết Quả
Data Analyst diễn giải các kết quả phân tích để đưa ra các thông tin có giá trị và khuyến nghị cụ thể. Điều này bao gồm việc kết nối các phát hiện với mục tiêu kinh doanh và giải thích ý nghĩa của các xu hướng hoặc mẫu phát hiện được.
8. Trình Bày và Báo Cáo
Data Analyst chuẩn bị báo cáo và trình bày kết quả phân tích cho các bên liên quan. Báo cáo thường bao gồm các phát hiện chính, khuyến nghị, và các hành động được đề xuất dựa trên phân tích.
9. Đánh Giá và Cải Thiện
Sau khi báo cáo được trình bày, Data Analyst có thể thu thập phản hồi từ các bên liên quan và đánh giá hiệu quả của các khuyến nghị. Dựa trên phản hồi, họ có thể thực hiện các cải thiện hoặc phân tích thêm để đạt được kết quả tốt hơn.
Các kỹ năng cần có để trở thành Data Analyst giỏi
Cùng tìm hiểu các kỹ năng cần thiết để trở thành một Data Analyst
Kỹ năng chuyên môn
Để trở thành một Data Analyst hiệu quả, các kỹ năng chuyên môn sau đây là rất cần thiết:
Công cụ cơ sở dữ liệu (Database Tools)
Data Analyst cần phải thành thạo các công cụ cơ sở dữ liệu như Microsoft Excel và SQL. Excel là công cụ phổ biến và hữu ích cho các phân tích dữ liệu cơ bản và trình bày kết quả. SQL (Structured Query Language) cho phép xử lý các tập dữ liệu lớn và thực hiện các truy vấn phức tạp, là một công cụ không thể thiếu trong phân tích dữ liệu.
Ngôn ngữ lập trình (Programming Languages)
Kỹ năng lập trình trong các ngôn ngữ như Python hoặc R là rất quan trọng. Những ngôn ngữ này giúp xử lý và phân tích các tập dữ liệu lớn, thực hiện các phép toán thống kê phức tạp. Python và R là những lựa chọn phổ biến, nhưng việc nắm vững ngôn ngữ nào là phù hợp sẽ tùy thuộc vào yêu cầu công việc cụ thể và ngành nghề.
Trực quan hóa dữ liệu (Data Visualization)
Kỹ năng trực quan hóa dữ liệu giúp truyền đạt các phát hiện phân tích một cách rõ ràng và hấp dẫn. Biết cách sử dụng các công cụ như Tableau, Jupyter Notebook và Excel để tạo ra biểu đồ và đồ thị giúp đồng nghiệp, nhà quản lý và các bên liên quan hiểu rõ hơn về kết quả phân tích.
Thống kê và toán học (Statistics and Math)
Hiểu biết về các khái niệm thống kê và toán học là nền tảng để sử dụng hiệu quả các công cụ phân tích dữ liệu. Kỹ năng này giúp lựa chọn công cụ phù hợp để giải quyết các vấn đề cụ thể, phát hiện lỗi trong dữ liệu và hiểu rõ hơn về kết quả phân tích.
Các công cụ Data Analyst nên biết
Trong quá trình phân tích dữ liệu, các nhà phân tích thường sử dụng nhiều công cụ khác nhau để làm cho công việc của họ chính xác và hiệu quả hơn. Một số công cụ phổ biến nhất trong ngành phân tích dữ liệu bao gồm:
Excel: Excel là công cụ phân tích dữ liệu phổ biến và mạnh mẽ, được sử dụng để xử lý dữ liệu, tạo bảng tổng hợp, biểu đồ và thực hiện phân tích thống kê cơ bản.
SQL (Structured Query Language): SQL là ngôn ngữ dùng để truy vấn và quản lý cơ sở dữ liệu. Nó cho phép Data Analyst truy xuất, chỉnh sửa và quản lý dữ liệu từ các hệ quản trị cơ sở dữ liệu (DBMS) như MySQL, PostgreSQL, Oracle và SQL Server.
R: R là một ngôn ngữ lập trình và môi trường phần mềm được sử dụng để phân tích thống kê và trực quan hóa dữ liệu. Nó cung cấp nhiều gói và thư viện cho các phương pháp phân tích dữ liệu nâng cao.
Python: Python là ngôn ngữ lập trình phổ biến trong phân tích dữ liệu nhờ vào các thư viện mạnh mẽ như Pandas, NumPy, SciPy và Matplotlib. Python giúp thực hiện phân tích dữ liệu, trực quan hóa và machine learning.
Tableau: Tableau là một công cụ trực quan hóa dữ liệu giúp tạo ra các dashboard và báo cáo dễ hiểu. Nó cho phép người dùng kéo và thả dữ liệu để tạo biểu đồ và báo cáo động.
Power BI: Power BI của Microsoft là một công cụ trực quan hóa và phân tích dữ liệu tương tự như Tableau. Nó tích hợp tốt với các sản phẩm của Microsoft và cho phép tạo báo cáo và dashboard tương tác.
Jupyter Notebooks: Jupyter Notebooks là công cụ giúp tạo và chia sẻ tài liệu có chứa mã nguồn, biểu đồ và văn bản giải thích. Nó thường được sử dụng với Python để thực hiện phân tích dữ liệu và trình bày kết quả.
Việc thành thạo các công cụ này giúp Data Analyst xử lý dữ liệu hiệu quả, thực hiện phân tích nâng cao và trình bày kết quả rõ ràng cho các bên liên quan.
Các kỹ năng mềm DA cần có
Tư duy phản biện (Critical Thinking)
Tư duy phản biện là khả năng phân tích và đánh giá thông tin một cách khách quan và có hệ thống. Data Analyst cần sử dụng tư duy phản biện để hiểu sâu vấn đề, nhận diện các mẫu và xu hướng trong dữ liệu, và đưa ra các giải pháp có cơ sở lý luận vững chắc.
Kỹ năng giải quyết vấn đề (Problem Solving)
Khả năng giải quyết vấn đề giúp Data Analyst xác định nguyên nhân gốc rễ của các vấn đề dữ liệu và tìm ra các giải pháp hiệu quả. Kỹ năng này bao gồm việc phân tích các tình huống phức tạp, đưa ra các giả thuyết và kiểm tra các giải pháp tiềm năng.
Kỹ năng giao tiếp (Communication)
Kỹ năng giao tiếp quan trọng để truyền đạt thông tin và kết quả phân tích cho các bên liên quan một cách rõ ràng và dễ hiểu. Data Analyst cần phải trình bày các phát hiện dữ liệu, giải thích ý nghĩa và ảnh hưởng của chúng, và thuyết phục các bên liên quan về các quyết định dựa trên dữ liệu.
Kỹ năng tổ chức và quản lý thời gian (Organization and Time Management)
Quản lý thời gian và tổ chức công việc hiệu quả giúp Data Analyst xử lý nhiều dự án và nhiệm vụ cùng lúc mà không làm giảm chất lượng công việc. Kỹ năng này bao gồm việc ưu tiên công việc, sắp xếp dữ liệu và tài liệu một cách có hệ thống để đảm bảo tiến độ hoàn thành dự án.
Kỹ năng làm việc nhóm (Team Collaboration)
Kỹ năng làm việc nhóm là cần thiết vì Data Analyst thường phải phối hợp với các bộ phận khác như marketing, công nghệ thông tin và quản lý để thu thập dữ liệu và triển khai các giải pháp. Khả năng làm việc hiệu quả trong nhóm giúp giải quyết các vấn đề dữ liệu và đạt được mục tiêu chung một cách hiệu quả.
Về cơ bản, để có thể trở thành Data Analyst, bạn ít nhất cần có một nền tảng Toán học và tiếng Anh đủ tốt để làm việc. Các dữ liệu phải xử lý mỗi ngày đều đòi hỏi rất nhiều các kiến thức liên quan đến những môn học này. Bên cạnh việc học tập tại trường, bạn cũng có thể tham gia nhiều khóa học online hoàn toàn miễn phí trên mạng với sự hướng dẫn từ những chuyên gia phân tích dữ liệu trên toàn cầu. Đây là cơ hội đặc biệt tốt để bạn tận dụng và làm tốt công việc của mình.
Những ngành nghề nào có nhu cầu tuyển Data Analyst cao?
Có rất nhiều ngành nghề hiện nay đều đòi hỏi cần có vị trí Data Analyst để phân tích và làm việc với số liệu.
Các ngành nghề liên quan đến tài chính, chứng khoán, bảo hiểm
Tài chính và ngân hàng
Phát triển công nghệ và mạng xã hội
Truyền thông – Marketing
Các ngành sản xuất, lắp ráp, logistics
Viễn thông kết nối
Y dược học, điều chế hóa phẩm
Các học viện, viện nghiên cứu
Nhiều ngành nghề hiện nay đều yêu cầu cần có vị trí Data Analyst
Mức lương của một Data Analyst
Theo số liệu của Cục Thống kê Lao động, trong khoảng thời gian từ năm 2014 – 2024, nhu cầu nhân lực liên quan đến nghiên cứu dữ liệu thị trường, trong đó có Data Analyst sẽ tăng thêm đến 19%. Điều này cho thấy cơ hội việc làm liên quan đến phân tích dữ liệu sẽ còn tăng cao hơn rất nhiều trong thời gian tới. Do đó, nếu có sự đầu tư ngay từ khi còn ngồi trên ghế nhà trường, bạn sẽ không phải lo lắng về cơ hội việc làm sau này.
Kết quả thống kê của Payscale cho thấy, các Data Analyst trình độ junior hiện đang nhận được mức lương dao động trong khoảng từ 40.000 – 77.000 USD/năm (trung bình khoảng 56.000 USD/năm). Đối với những người đã có kinh nghiệm và giữ các vị trí cao hơn, mức lương sẽ tăng cao hơn nhiều nằm trong mức từ 109.000 USD/năm.
Trong lĩnh vực Công nghệ thông tin, theo Báo cáo thị trường IT năm 2022 của TopDev, các vị trí làm việc liên quan đến dữ liệu và phân tích dữ liệu cũng được ghi nhận là có mức lương khá cao so với mặt bằng chung. Theo đó:
Mức lương tham khảo của một Data Analyst tại Việt Nam trong năm 2024 thường dao động theo cấp bậc và kinh nghiệm như sau:
Data Analyst Fresher (Mới vào nghề): Từ 10 – 15 triệu VNĐ/tháng.
Junior Data Analyst (Kinh nghiệm 1-3 năm): Từ 15 – 25 triệu VNĐ/tháng.
Senior Data Analyst (Kinh nghiệm 3-5 năm): Từ 25 – 40 triệu VNĐ/tháng.
Lead Data Analyst / Data Analyst Manager (Trên 5 năm kinh nghiệm): Từ 40 – 60 triệu VNĐ/tháng hoặc cao hơn, tùy thuộc vào quy mô và yêu cầu của công ty.
Tiềm năng của ngành Data Analyst
Ngành Data Analyst có tiềm năng phát triển mạnh mẽ trong tương lai, đặc biệt trong bối cảnh mà dữ liệu ngày càng trở nên quan trọng trong các quyết định đối với doanh nghiệp và tổ chức. Dựa trên sự phân tích và hiểu biết về dữ liệu, Data Analyst có khả năng cung cấp thông tin và kiến thức đáng giá giúp các doanh nghiệp đưa ra quyết định chiến lược chính xác hơn.
Với sự phát triển của công nghệ và internet, nguồn dữ liệu ngày càng lớn và đa dạng, từ đó tạo ra nhu cầu ngày càng cao về việc phân tích và khai thác dữ liệu. Data Analyst có vai trò quan trọng trong việc thu thập, xử lý, và phân tích dữ liệu để tạo ra thông tin hữu ích, từ đó hỗ trợ các quyết định kinh doanh chính xác.
Ngoài ra, các lĩnh vực như trí tuệ nhân tạo, Machine learning, Big data, và Internet of Things (IoT) cũng đang phát triển mạnh mẽ, mở ra nhiều cơ hội mới cho Data Analyst áp dụng và phát triển kỹ năng của mình. Việc áp dụng các công nghệ mới giúp Data Analyst thực hiện phân tích dữ liệu một cách chính xác và nhanh chóng hơn, từ đó đưa ra những insight quan trọng để giúp doanh nghiệp cạnh tranh hiệu quả trên thị trường.
Phân biệt DA (Data Analyst) và DS (Data Scientist)
Dưới đây là bảng so sánh ngắn gọn giữa Data Analyst và Data Scientist
Lộ trình nghề nghiệp là một quá trình dài và phức tạp. Bạn cần xác định cho bản thân hướng đi và làm tốt các giai đoạn chuẩn bị cần thiết để có thể nhanh chóng đạt được ước mơ của mình. Hi vọng bài viết này sẽ giúp bạn phần nào hiểu được những vấn đề có liên quan đến Data Analyst là gì cũng như lộ trình trở thành một Data Analyst. Đón đọc thêm nhiều bài viết hấp dẫn khác cùng TopDev bạn nhé!
Bạn đã nghe rất nhiều người nói Android Jetpack, nhưng thực sự Android Jetpack là gì? Bài viết này chúng ta sẽ cùng nhau tìm hiểu về Android Jetpack nhé.
#Android Jetpack là gì?
Android Jetpack là một tập hợp các components, tools giúp bạn nhanh chóng tạo ra các ứng dụng Android tuyệt vời. Các components này kết hợp giữa Support Library và Architecture Components.
Có thể phân loại Android Jetpack thành 4 thành phần chính:
Để hiểu kỹ hơn và trả lời câu hỏi Android Jetpack là gì? thì hãy xem xét: Các Android Jetpack components được cung cấp dưới dạng các thư viện “mở”, không phải là một phần của nền tảng Android cơ bản. Điều này có nghĩa là bạn có thể dễ dàng áp dụng từng component.
Mỗi khi Android Jetpack có thêm một tính năng mới, bạn có thể dễ dàng thêm nó vào trong ứng dụng của mình, triển khai ứng dụng trên Play Store và cung cấp cho người dùng tất cả các tính năng mới chỉ trong một ngày. Các thư viện mở sẽ được chuyển vào androidx.* namespace mới.
Ngoài ra, ứng dụng của bạn có thể chạy mượt mà trên nhiều phiên bản của Android mà không lo lắng về tính tương thích. Tại sao ư?
Vì đơn giản là Android Jetpack được xây dựng dựa trên Support Library. Mà các thư viện này được các nhà phát triển Android tạo ra để cung cấp các chức năng độc lập với các phiên Android, và có tính tương thích ngược rất tốt.
Ví dụ như: Ứng dụng của bạn sử dụng Fragment mà lại muốn hỗ trợ Android 3.0 trở xuống? Chính là lúc bạn nghĩ tới Support Library đấy.
Hơn nữa, Android Jetpack còn có thiết kế rất tốt cho việc testing. Nó tách biệt giữa phần chức năng và phần test. Điều này giúp bạn dễ dàng kiểm tra, nâng cao chất lượng ứng dụng.
4. Các component độc lập với nhau
Mặc dù các components của Android Jetpack được xây dựng để hoạt động cùng nhau. Ví dụ: lifecycle awareness và live data.
Tuy nhiên, bạn không phải bắt buộc phải sử dụng tất cả chúng. Bạn có thể tích hợp từng phần của Android Jetpack để giải quyết một vấn đề của bạn. Điều này giúp cho ứng dụng trở nên nhẹ nhàng.
WorkMananager component là một thư viện cung cấp giải pháp giúp cho các tác vụ chạy nền( background task) được hiệu quả hơn.
Đưa một nhiệm vụ cho WorkManager và để cho nó chọn một cách thích hợp để chạy nó trong nền tùy theo điều kiện. Nó thay thế những thứ như jobs hoặc SyncAdapters.
WorkManager cung cấp một API có khả năng làm việc trên các thiết bị có hoặc không có Google Play Services.
Ngoài ra, WorkManager còn có khả năng tạo biểu đồ công việc và truy vấn trạng thái công việc của bạn.
2. Navigation
Trong khi Activity trong Android được cung cấp để bạn dễ dàng tạo và tương tác với người dùng thông qua UI. Nhưng nó lại không linh hoạt trong việc chia sẻ dữ liệu và chuyển đổi giữa các Activity.
Chính vì vậy mà Activity trở thành một cấu trúc kém lý tưởng để xây dựng điều hướng trong ứng dụng.
Vì vậy, Google I/O 18 đã giới thiệu Navigation component dưới dạng một famework. Navigation component giúp cho bạn dễ dàng tạo điều hướng trong ứng dụng.
Navigation Editor trong Android Studio 3.2
Với khả năng hỗ trợ Fragment, bạn sẽ nhận được tất cả các lợi ích từ Architecture Components như Lifecycle và ViewModel trong khi Navigation sẽ xử lý sự phức tạp của FragmentTransilities giùm bạn.
Mình có thể liệt kê một số tính năng hay ho của Navigation component như:
Hỗ trợ hiệu ứng khi bạn điều hướng giữa các màn hình.
Cung cấp công cụ để kết nối Navigation vào các tiện ích UI thích hợp. Như navigation drawer và Bottom Navigation
Cuối cùng, trình chỉnh sửa Navigation Editor trong Android Studio 3.2 còn cho phép bạn xem và quản lý các navigation properties của mình một cách rất trực quan.
3. Paging
Thông thường, người ta sẽ không tải toàn bộ dữ liệu và hiển thị ra màn hình. Vì điều đó sẽ vừa tốn thời gian lấy dữ liệu, vừa tốn thời gian và tài nguyên để hiển thị. Do vậy, người ta chỉ tải từng phần của dữ liệu. Đây chính là khái niệm paging.
Paging component giúp việc tải dữ liệu trở nên dễ dàng. Đồng thời giúp việc hiển thị các tập dữ liệu lớn với tốc độ cuộn nhanh hơn, không giới hạn với RecyclerView.
Paging component có thể tải dữ liệu phân trang từ bộ nhớ cục bộ, mạng hoặc cả hai. Nó hoạt động hiệu quả hơn hẳn so với Room, LiveData và RxJava.
4. Slices
Để hoàn thiện bộ các tính năng mới ra mắt của Android Jetpack thì không thể không nhắc đến Slices component.
“Slice” là cách để hiển thị UI của ứng dụng bên trong Google Assistant. Giống như hình bên dưới:
5. Android KTX
Và cuối cùng nhưng không kém phần quan trọng trong câu trả lời Android Jetpack là gì, một mục tiêu của Android Jetpack đó là tận dụng các ưu điểm của ngôn ngữ Kotlin giúp bạn làm việc hiệu quả hơn.
Android KTX cho phép bạn chuyển đổi mã Kotlin từ như thế này:
Ngành công nghệ thông tin (IT) là một trong những ngành phát triển nhanh nhất và có nhu cầu nhân lực cao nhất hiện nay. Tuy nhiên, với những người mới ra trường hoặc chưa có kinh nghiệm, việc tìm kiếm một công việc IT có thể là một thách thức. Do vậy, một trong những yếu tố quan trọng nhất để có được công việc IT là một bản CV được viết tốt. Bài viết này sẽ bật mí cho bạn những bí quyết giúp tạo một CV xin việc IT cho người chưa có kinh nghiệm. Giúp bạn chinh phục cánh cửa việc làm trong lĩnh vực công nghệ thông tin một cách tự tin và thành công.
CV xin việc cho lập trình viên quan trọng như thế nào?
Trước khi bắt đầu tìm việc, nhiều người thường cảm thấy tự ti và lúng túng trong việc viết một bản CV hoàn chỉnh, đặc biệt là sinh viên mới ra trường. Tuy nhiên, đừng vội từ bỏ vị trí việc làm mà mình mơ ước chỉ vì thiếu kinh nghiệm. Các công ty không chỉ tìm kiếm những ứng viên giàu kinh nghiệm mà còn rất trân trọng những người trẻ đầy đam mê, nhiệt huyết và không ngại khó.
Với thị trường IT đầy cạnh tranh, để có thể lọt vào “mắt xanh” nhà tuyển dụng thì việc trau chuốt CV là điều vô cùng cần thiết đối với những ai chưa có kinh nghiệm. Bằng cách này, bạn có thể chứng tỏ được sự nghiêm túc và thể hiện được sự trân trọng với công việc mình đang ứng tuyển. Hãy khẳng định giá trị của mình và bắt đầu bước vào thế giới việc làm với sự tự tin và quyết tâm bạn nhé!
Hướng dẫn cách viết CV xin việc IT cho người chưa có kinh nghiệm
Bạn đã gửi rất nhiều mẫu CV đến nhà tuyển dụng nhưng không nhận được hồi âm? Có thể nguyên nhân chính là cách viết CV của bạn chưa đạt tiêu chuẩn, đặc biệt khi bạn là người chưa có kinh nghiệm. Vậy nên, dưới đây sẽ là những hướng dẫn cách viết CV IT hiệu quả và thu hút sự chú ý của nhà tuyển dụng.
Thông tin cá nhân
Thông tin cá nhân là một phần quan trọng của CV. Nó cung cấp cho nhà tuyển dụng thông tin cơ bản về bạn, bao gồm tên, địa chỉ, số điện thoại và email. Thông tin cá nhân nên được viết gọn gàng và dễ đọc.
Thêm vào đó, việc chỉ rõ vị trí ứng tuyển cũng rất quan trọng. Điều này giúp quá trình lọc hồ sơ của nhà tuyển dụng diễn ra nhanh chóng, chính xác và tiết kiệm thời gian hơn.
Khi viết CV cho người chưa có kinh nghiệm, hãy đặc biệt cẩn thận và trau chuốt hơn. Với ảnh đại diện, hãy chọn một bức ảnh đại diện chân dung rõ mặt, lịch sự và nụ cười nhẹ nhàng. Đồng thời, sử dụng một địa chỉ email chuyên nghiệp, gồm tên thật và dấu hiệu nhận biết như học vấn, để tạo ấn tượng chuyên nghiệp với nhà tuyển dụng.
Lưu ý: Trong mục thông tin cá nhân, bạn chỉ cần cung cấp những thông tin cơ bản và quan trọng. Tránh đưa thông tin quá cá nhân như tôn giáo, thị tộc, tình trạng hôn nhân, số CMND, hay thông tin nhạy cảm không liên quan đến việc xin việc.
Phần “Mục tiêu nghề nghiệp” trong CV giúp bạn thể hiện mục tiêu và ý định khi ứng tuyển vào công việc cụ thể. Nhà tuyển dụng sẽ đánh giá cao những ứng viên trình bày mục tiêu nghề nghiệp cụ thể, rõ ràng vì vậy bạn đừng ghi chung chung mà hãy ghi thật chi tiết ra nhé.
Trong phần này, bạn nên chia thành mục tiêu dài hạn và ngắn hạn. Mỗi mục tiêu nên được trình bày trong 2 – 3 ý. Mục tiêu ngắn hạn sẽ là bước đệm để đạt được mục tiêu dài hạn. Chú ý liên kết mục tiêu với vị trí ứng tuyển và cách bạn có thể đóng góp cho công ty.
Trình độ học vấn
Lĩnh vực Công nghệ thông tin yêu cầu ứng phải có trình độ và kiến thức nền tảng cao. Do đó, trong CV của lập trình viên, việc liệt kê trình độ học vấn là điều quan trọng. Hãy cung cấp thông tin chi tiết về tên trường, chuyên ngành, thời gian học và những thành tích đã đạt được.
Ngoài ra, bạn hãy liệt kê cả loại tốt nghiệp để tạo ấn tượng tích cực với nhà tuyển dụng. Một mẹo nhỏ là sắp xếp các thông tin theo thứ tự thời gian, từ gần đây đến xa hơn, nhấn mạnh vào những thành tựu đáng chú ý nhất.
Kinh nghiệm làm việc
Khi viết CV xin việc IT cho người chưa có kinh nghiệm, hãy tập trung vào các dự án học tập, hoạt động ngoại khóa liên quan đến lĩnh vực công việc, và kỹ năng đã phát triển. Liệt kê các thành tựu đạt được trong việc hoàn thành dự án và giải quyết vấn đề. Đề cập đến tích cực tham gia học tập và sẵn lòng học hỏi, cũng như đánh giá cao việc tăng cường kiến thức trong công việc mới. Tạo ấn tượng với nhà tuyển dụng về những cam kết và đam mê với công việc này.
Kỹ năng và điểm mạnh
Kỹ năng và điểm mạnh là lợi thế quan trọng để bù đắp thiếu hụt kinh nghiệm, vì vậy bạn hãy trình bày phần này một cách chi tiết và cẩn thận. Liệt kê các kỹ năng chuyên môn đã học, kỹ năng mềm như làm việc nhóm, giao tiếp, quản lý thời gian, và những kỹ năng liên quan đến công việc như quản lý dự án. Đồng thời, nhấn mạnh những thành tựu đáng chú ý và điểm mạnh của bạn trong lĩnh vực này.
Chứng chỉ, bằng cấp
Một phần không thể thiếu trong CV của người chưa có kinh nghiệm là liệt kê các bằng cấp và chứng chỉ đã hoàn thành. Hãy đưa vào CV những dự án, học bổng, giải thưởng và điểm đánh giá xuất sắc để tăng ấn tượng từ phía nhà tuyển dụng.
Những điểm cần lưu ý khi viếtCV xin việc IT cho người chưa có kinh nghiệm
Trình bày CV ngắn gọn
Trình bày CV ngắn gọn là một điểm quan trọng khi viết CV xin việc IT cho người chưa có kinh nghiệm. Tránh việc viết quá dài hoặc quá chi tiết về những thông tin không liên quan đến vị trí ứng tuyển. Tóm tắt nội dung trong mỗi mục và sắp xếp theo thứ tự quan trọng để tạo sự dễ đọc và gây ấn tượng nhanh chóng cho nhà tuyển dụng.
Điều chỉnh CV phù hợp với vị trí ứng tuyển
Để thu hút sự chú ý của nhà tuyển dụng, hãy điều chỉnh CV phù hợp với vị trí ứng tuyển. Nắm vững yêu cầu công việc và kỹ năng cần thiết cho vị trí IT mà bạn đang xin. Tiêu đề và mục tiêu nghề nghiệp phải rõ ràng và phản ánh đúng vị trí mà bạn muốn ứng tuyển. Bổ sung thông tin về trình độ học vấn, các khóa học liên quan và các dự án cá nhân nếu có.
Tập trung nhấn mạnh ưu điểm của bản thân
Dù bạn chưa có kinh nghiệm trong lĩnh vực IT, nhưng luôn nhấn mạnh những ưu điểm của bản thân trong CV. Nhà tuyển dụng thường quan tâm đến khả năng học hỏi, sáng tạo và khả năng làm việc nhóm. Hãy đề cập đến những dự án hay công việc đã làm trong quá khứ, trong đó bạn đã phát huy được những kỹ năng này. Đồng thời, nhắc đến những kỹ năng mềm như tổ chức, quản lý thời gian và giao tiếp hiệu quả.
Đính kèm cover letter
Một cover letter đính kèm CV sẽ giúp bạn tạo được ấn tượng tốt hơn với nhà tuyển dụng. Trong cover letter, giải thích lý do bạn muốn làm việc trong lĩnh vực IT và làm rõ mong muốn được xin việc tại công ty mà bạn ứng tuyển. Nhấn mạnh các kỹ năng và kinh nghiệm liên quan đến vị trí mà bạn muốn ghi danh. Hãy viết cover letter bằng văn phong chuyên nghiệp, lịch sự và đừng quá dài dòng.
Ngoài việc chuẩn hóa Cv, việc gửi Cv đúng thời điểm vàng cũng là một trong những yếu tố bạn cần quan tâm.
Kết luận
Như vậy, bài viết này đã hướng dẫn bạn cách viết CV xin việc IT cho người chưa có kinh nghiệm một cách chi tiết. Bằng cách tập trung vào học vấn, dự án học tập, hoạt động ngoại khóa, kỹ năng và điểm mạnh của mình, bạn có thể tạo nên một CV ấn tượng và thu hút sự quan tâm từ nhà tuyển dụng. Chúc bạn thành công!
Trong thời đại công nghệ hiện đại, việc mua sắm trực tuyến đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày của chúng ta. Để giúp người tiêu dùng tiết kiệm chi phí và tận hưởng những ưu đãi hấp dẫn, ShopBack đã có mặt như một đối tác đáng tin cậy. Với mục tiêu mang lại sự tiện lợi và tiết kiệm cho người dùng, ShopBack trở thành một trong những nền tảng hoàn tiền được ưa chuộng nhất hiện nay.
1. Giới thiệu về ShopBack
ShopBack là một nền tảng hoàn tiền hàng đầu trong lĩnh vực mua sắm trực tuyến. Với hơn 400 đối tác t uy tín, ShopBack kết nối người tiêu dùng với các cửa hàng trực tuyến, từ thời trang, điện tử, đến du lịch,… Điều đặc biệt là ShopBack không chỉ hoàn tiền thật cho người dùng, mà còn mang lại những ưu đãi đặc biệt như mã giảm giá và các chương trình khuyến mãi hấp dẫn.
2. Các tính năng của ShopBack
ShopBack cung cấp nhiều tính năng hữu ích giúp người dùng tận hưởng trải nghiệm mua sắm tiện lợi và tiết kiệm. Dưới đây là một số tính năng nổi bật của ShopBack:
Mã giảm giá và ưu đãi đặc biệt: ShopBack cung cấp các mã giảm giá và ưu đãi đặc biệt từ các đối tác thương hiệu hàng đầu. Người dùng có thể áp dụng mã này để nhận được những ưu đãi nhân đôi hoặc nhân 3 của các thương hiệu có kết nối với ShopBack bên cạnh việc nhận hoàn tiền.
Cập nhật các deal hot: ShopBack cung cấp thông tin về các deal hot, khuyến mãi mới nhất từ các đối tác hàng đầu. Bằng cách sử dụng ShopBack, bạn có thể dễ dàng tìm hiểu về các ưu đãi đặc biệt, giảm giá sản phẩm, gói combo hấp dẫn và nhiều hơn nữa. Điều này giúp bạn không bỏ lỡ bất kỳ ưu đãi nào và tiết kiệm được nhiều hơn khi mua sắm.
Lưu cửa hàng yêu thích: ShopBack cho phép bạn lưu trữ danh sách các cửa hàng yêu thích để theo dõi và nhận thông báo tăng hoàn tiền từ cửa hàng đó. Bạn có thể đánh dấu trái tim cửa hàng mà bạn quan tâm và ShopBack sẽ thông báo cho bạn về các ưu đãi đặc biệt như tăng hoàn tiền khia mua sắm cửa hàng đó hoặc các thử thách mua sắm mới.
Thử thách: Đây là một trong những tính năng mà người dùng yêu thích nhất của ShopBack. Khi bạn tham gia thử thách mua sắm đơn từ 50K, bạn sẽ có cơ hội cào trúng tiền thưởng hoặc voucher lên đến 500K cho khách hàng mới. Ngoài ra ShopBack còn có rất nhiều các thử thách tặng tiền thưởng mỗi tháng khi mua sắm tại Traveloka, Agoda, Uniqlo,…
3. Cách sử dụng ShopBack để mua sắm tiết kiệm hơn
Việc sử dụng ShopBack để mua sắm tiết kiệm là rất đơn giản. Xem hướng dẫn bên dưới để luôn nhận hoàn tiền thật khi mua sắm nhé:
Bước 1: Đăng ký tài khoản: Truy cập vào link: https://app.shopback.com/vnm/partner/topdev và đăng ký tài khoản mới. Quá trình đăng ký chỉ mất vài phút và hoàn toàn miễn phí.
Bước 2: Tìm kiếm cửa hàng và ưu đãi: Sử dụng tính năng tìm kiếm trên ShopBack để tìm kiếm cửa hàng hoặc sản phẩm mà bạn muốn mua. ShopBack sẽ hiển thị danh sách các cửa hàng đối tác và ưu đãi hiện có.
Bước 3: Truy cập vào cửa hàng đó từ ShopBack: Sau khi bạn đã tìm thấy cửa hàng hoặc ưu đãi phù hợp, nhấp vào đó để chuyển hướng đến trang đối tác.
Bước 4: Mua sắm bình thường: Khi bạn đã chuyển hướng đến trang đối tác, hãy mua sắm như bình thường. Thêm sản phẩm vào giỏ hàng và hoàn tất quá trình thanh toán.
Bước 5: Hoàn tiền sẽ được ghi nhận trong tài khoản ShopBack trong 48H, và từ 45-90 ngày tùy vào từng đối tác, tiền hoàn sẽ được chuyển sang trạng thái Đã Xác Nhận và bạn có thể rút tiền về tài khoản ngân hàng của mình.
4. Những lợi ích khi sử dụng ShopBack
Sử dụng ShopBack mang lại nhiều lợi ích cho người dùng. Dưới đây là một số lợi ích quan trọng khi sử dụng ShopBack để mua sắm trực tuyến:
Tiết kiệm sau mỗi lần mua sắm: Khi sử dụng ShopBack, bạn nhận được hoàn tiền thật và sử dụng các mã giảm giá, giúp bạn tiết kiệm sau mỗi lần mua sắm Online hoặc đặt dịch vụ du lịch.. Đặc biệt những ai là tín đồ shopping online thì mua càng nhiều, hoàn tiền càng cao.
Dễ dàng tìm kiếm sản phẩm, dịch vụ ưa thích: ShopBack cung cấp một danh sách đa dạng các cửa hàng và sản phẩm từ các đối tác hàng đầu. Bạn có thể dễ dàng tìm kiếm và so sánh giữa các lựa chọn để tìm ra sản phẩm hoặc dịch vụ ưng ý nhất.
Cập nhật thông tin các deal hot mới nhất: ShopBack luôn cập nhật thông tin về các deal hot, khuyến mãi mới nhất từ các đối tác thương hiệu hàng đầu.
Với những tính năng và lợi ích trên, việc sử dụng ShopBack không chỉ giúp bạn tiết kiệm chi phí mua hàng mà còn mang lại trải nghiệm mua sắm tiện lợi và tiết kiệm hơn trong thời đại công nghệ.
Hãy trải nghiệm ShopBack và tải app tại link https://app.shopback.com/vnm/partner/topdev ngay hôm nay để tận hưởng hoàn tiền khi mua sắm và những ưu đãi hấp dẫn trong hành trình mua sắm trực tuyến của bạn.
Tham khảo thêm nhiều việc làm IT hấp dẫn tại TopDev!
Đôi khi bạn cần phải kiểm tra một phần tử trong mảng, xem nó có tồn tại trong mảng hay không? Với yêu cầu này, bạn có rất nhiều cách để thực hiện, kể cả chơi bài duyệt mảng “bằng tay”.
Tuy nhiên, khi công cụ đã hỗ trợ sẵn thì không tội gì lại bỏ qua không dùng cả. Bài viết này mình sẽ giới thiệu 3 cách để thực hiện kiểm tra một phần tử trong mảng. Mỗi cách đều có ưu và nhược điểm riêng tùy vào từng yêu cầu cụ thể của dự án.
Chúng ta bắt đầu nhé.
Các cách kiểm tra một phần tử trong mảng
.includes()
Đối với trường hợp, bạn chỉ cần kiểm tra một giá trị nào đó có tồn tại trong mảng hay không? Câu trả lời chỉ cần: có hoặc không. Phương pháp hiệu quả nhất là sử dụng hàm .includes(). Bạn chỉ cần truyền giá trị cần kiểm tra vào tham số, kết quả true/false sẽ được trả về.
Ví dụ:
let names =["Jim","Sarah","Tychus"];if(names.includes("Tychus")){ console.log("Value found");}
Ngoài yêu cầu kiểm tra xem giá trị đó có tồn tại hay không? Nếu tồn tại thì cụ thể giá trị đó ở vị trí nào trong mảng. Lúc này hàm .indexOf() là lựa chọn sáng suốt.
let names =["Jim","Sarah","Tychus"];if(names.indexOf("Tychus")>=0){ console.log("Value found");}
Lưu ý: Hàm .indexOf() chỉ trả về vị trí của giá trị đó trong mảng, nếu không tồn tại thì nó trả về -1.
Đây là cách thủ công mà mình đã nhắc đến ở đầu bài viết. Cách làm này không cần phải biết kỹ thuật gì cao siêu cả, cứ nghĩ sao làm vậy. Mặc dù các viết code thì nó dài vậy thôi, chứ hiệu năng thì cũng tương đương với hai cách ở trên.
function findValue(haystack,needle){ for(const item of haystack){ if(item === needle){ returntrue; } } returnfalse; } let names =["A","B","C","D","E"]; console.log(findValue(names,"D"));
Trên đây là một số cách để bạn có thể tìm kiếm một phần tử bất kỳ trong mảng. Mặc dù kỹ thuật này không khó, nhưng mình tin là nhiều bạn chưa biết, hoặc đã biết nhưng đã quên . Coi như đây là phần note lại dùng khi cần thiết.
Bài viết được sự cho phép của tác giả Tống Xuân Hoài
Vấn đề
JavaScript là một ngôn ngữ lập trình bất đồng bộ – điều đó ai mà chẳng biết chứ. Hoạt động bất đồng bộ thể hiện rõ nhất qua các hàm bất đồng bộ, tức là các hàm không trả lại kết quả ngay lập tức mà nó sẽ trả về trong một thời điểm “nào đó”.
Nếu xuất thân từ một lập trình viên PHP, Go hay thậm chí là Java… có thể bạn chưa nghe hoặc đang còn mơ hồ về khái niệm lập trình bất đồng bộ là như thế nào. Có thể bạn sẽ đặt ra ra câu hỏi là tại sao JavaScript lại là ngôn ngữ bất đồng bộ, liệu nó mang lại lợi ích hay hạn chế gì cho ngôn ngữ này.
Bài viết ngày hôm nay, tôi sẽ phân tích về việc tại sao JavaScript lại là ngôn ngữ bất đồng bộ. Hay nói cách khác là vì sao nó “nên” là ngôn ngữ lập trình bất đồng bộ.
Lập trình bất đồng bộ là gì?
Lập trình bất đồng bộ (Asynchronous Programming) là một phương pháp lập trình cho phép các tác vụ được thực hiện độc lập và song song mà không cần chờ đợi các tác vụ khác hoàn thành trước đó. Thay vì đợi cho đến khi một tác vụ hoàn thành và trả về kết quả trước khi bắt đầu tác vụ tiếp theo, lập trình bất đồng bộ cho phép các tác vụ đang chạy cùng một lúc, điều này giúp cải thiện hiệu suất và thời gian phản hồi.
Trong JavaScript, lập trình bất đồng bộ thể hiện ở các hàm bất đồng bộ, trả lại kết quả thông qua các hàm Callback, Promise, async/await, Event listeners… Ví dụ như các cuộc gọi API được thực hiện bất đồng bộ, các sự kiện từ phía người dùng (move, click, focus…) cũng thế… Tương tự, trong môi trường Node.js chúng ta có các truy vấn đến cơ sở dữ liệu, thao tác với các tệp tin… cũng là những hành động bất đồng bộ.
JavaScript ban đầu được thiết kế để chạy trên trình duyệt thông qua các ứng dụng web. Vì đặc thù của trình duyệt cho nên JavaScript phải được thiết kế theo hướng bất đồng bộ để tăng hiệu suất.
Hãy thử hình dung tình huống giả sử JavaScript chạy đồng bộ, khi trang web đang được tải và trong quá trình xử lý hiển thị cho người dùng xem thì một lệnh Ajax gọi đến một máy chủ nào đó để lấy dữ liệu về. Khi đó quá trình render sẽ bị “tạm dừng” để chờ kết quả. Sẽ ra sao nếu mạng chậm hoặc máy chủ phản hồi lâu? Trang web sẽ không thể hoạt động một cách bình thường chỉ vì nó phải chờ đợi các hàm mất “nhiều thời gian”.
Thật may, cuộc gọi Ajax là một hoạt động bất đồng bộ, cho nên quá trình render vẫn có thể diễn ra bình thường.
Các ứng dụng web là tổ hợp các sự kiện của người dùng. Họ lướt chuột, cuộn lên cuộn xuống trang web, bấm vào nút, nhập nội dung… Để xử lý được, JavaScript phải tạo ra cơ chế “lắng nghe” (Event listeners) sự kiện để thực hiện một tác vụ tương ứng khi nó xảy ra. Điều này không thể nào diễn ra ở lập trình đồng bộ được. Cơ chế Event listeners cho phép lập trình viên tạo ra các hàm xử lý và nó sẽ được gọi khi một hành động nào đó của người dùng diễn ra.
Nhờ thế mà ngày nay chúng ta có nhiều Framework lập trình bất đồng bộ rất tốt được ra đời như Node.js, Angular và React, giúp lập trình viên phát triển các ứng dụng web hiệu quả và tăng tốc độ phản hồi của ứng dụng.
Nói tóm lại, JavaScript “nên” được thiết kế theo kiểu bất đồng bộ để đáp ứng nhu cầu của các ứng dụng web hiện đại, cải thiện hiệu suất và tương thích tốt với cấu trúc của trình duyệt.
Ưu nhược điểm
Một trong những ưu điểm lớn nhất của lập trình bất đồng bộ đó là tăng hiệu suất cho các ứng dụng, tăng tốc độ thực thi của các tác vụ trong ứng dụng bằng cách cho phép chúng được thực hiện song song mà không phải chờ đợi các tác vụ khác hoàn thành trước đó. Các tác vụ có thể được thực hiện mà không phải chặn luồng chính của ứng dụng, tránh bị treo máy.
Với bất đồng bộ, các tác vụ lớn có thể được chia nhỏ thành các phần nhỏ hơn và được thực hiện đồng thời. Điều này giúp tăng hiệu suất và giảm thời gian thực hiện cho các tác vụ lớn.
Bên cạnh đó lập trình bất đồng bộ cũng mang lại một số phiền hà nhất định. Đầu tiên là khả năng tiếp cận, làm quen với phong cách bất đồng bộ này, có thể mất một thời gian để hiểu được concept lẫn phong cách của nó.
Khó khăn trong việc xử lý lỗi và cả gỡ lỗi. Vì các tác vụ được thực hiện đồng thời, cho nên nếu một tác vụ lỗi, các tác vụ khác vẫn chạy bình thường, việc xử lý lỗi lúc này có phần phức tạp hơn. Hoặc nếu tác vụ chồng chéo nhay, việc truy vết lỗi cũng mang lại nhiều khó khăn.
Cho dù lập trình đồng bộ hay là bất đồng bộ đều đòi hỏi khả năng quản lý tài nguyên chia sẻ. Đối với bất đồng bộ, nhiều tác vụ đồng thời có thể đang cùng truy cập vào tài nguyên dùng chung, cho nên phải có phương án hoặc kĩ năng giải quyết để tránh xung đột.
Tổng kết
Lập trình bất đồng bộ là một phương pháp lập trình cho phép các tác vụ được thực hiện độc lập và song song mà không cần chờ đợi các tác vụ khác hoàn thành trước đó. JavaScript là một ngôn ngữ lập trình bất đồng bộ, điều này mang lại cho nó nhiều “lợi thế” trong môi trường trình duyệt. Không những thế, Node.js cũng tận dụng được sức mạnh của bất đồng bộ để tạo ra máy chủ có hiệu suất cao. Bên cạnh đó, bất đồng bộ cũng mang lại một số khó khăn nhất định sự thời gian làm quen ban đầu, quá trình xử lý lỗi và quản lý tài nguyên dùng chung.