Tại các công ty công nghệ lớn, thuật toán là một trong những “cửa ải” mà nhà tuyển dụng đặt ra để thử thách tư duy logic của ứng viên IT. Vậy lập trình viên giỏi có cần “luyện” thuật toán hay không, và nên học thuật toán như thế nào? Cùng TopDev trò chuyện cùng anh Nguyễn Thanh Tùng – CEO tại trung tâm giảng dạy thuật toán BigO và cũng là giảng viên tại trường Đại học Khoa học Tự nhiên và Xã hội.
Trước hết, anh hãy giải thích Thuật toán là gì? Cách mà thuật toán hoạt động là như thế nào.
Thuật toán thực ra cũng đơn giản, không phải cái gì đó phức tạp. Nó là những phương pháp, những cách mà người ta yêu cầu mình làm đúng theo những quy trình như vậy thì nó sẽ ra được kết quả tối ưu. Phương pháp này có thể đến từ nhiều nguồn khác nhau, có thể là một nhà khoa học họ sáng chế ra, cũng có thể là một nhóm người nào đó hoặc kinh nghiệm truyền nhiều năm, khi mà mình áp dụng đúng quy cách như vậy thì mình sẽ có những kết quả tốt hơn là những cái gì đó mình tự làm.
Thuật toán khác gì với cách lập trình thông thường? Nếu không biết về thuật toán thì có thể lập trình được không?
Bạn không biết thuật toán, bạn vẫn có thể lập trình và cũng có thể lập trình giỏi, tuy nhiên nếu bạn biết thuật toán bạn sẽ có thêm những phương pháp hay hơn. Tôi ví dụ thuật toán đơn giản như vậy, tôi cho bạn dãy số, và tôi yêu cầu bạn hãy tìm một con số mà tôi đưa có nằm trong dãy số đó không? Nếu như bạn không học thuật toán thì rất đơn giản, bạn cứ so sánh mỗi số một lần miễn sao bạn tìm được con số có nằm trong dãy số này hay không. Còn người khi học thuật toán, họ sẽ nghĩ khác, thứ nhất họ sẽ nghĩ những con số mà người ta đưa ra liệu nó có lớn hay không, tại vì nếu như người ta đưa lớn quá sẽ gây hiện tượng tràn số và nếu như mình phải làm thêm thao tác cộng, trừ, nhân, chia. Số lượng người ta đưa ra bao nhiêu cũng ảnh hưởng đến việc sử dụng thuật toán, ví dụ người ta đưa ra 10 số, 20 số thì làm dễ, còn người ta đưa 1 tỷ số hoặc 10 tỷ số thì việc tìm kiếm đó nó rất không khả thi nếu mình tìm bình thường, như vậy thì mình phải áp dụng thêm thuật toán vào, bằng cách mình có thể sắp xếp trước những con số đó lại và khi mình sắp xếp như vậy thì mình sẽ tốn thời gian cho việc sắp xếp đó nhưng sau đó mình tìm kiếm rất là nhanh. Cuối cùng thời gian tìm kiếm rất là nhanh, dù là 1 tỷ số hay 10 tỷ số thì tìm kiếm trong vòng 1s cũng ra kết quả được. Còn nếu mình không áp dụng thuật toán, mình cứ làm hoài, cứ so sánh hoài, rồi khi người ta tăng lên thì thời gian chạy rất là lâu.
Vì sao gần đây thuật toán đang dần được chú trọng trong quá trình phỏng vấn?
Ở Việt Nam, tôi thấy mới thời gian gần đây thôi nhưng mà ở nước ngoài thì khá là lâu rồi. Từ lúc tôi học thuật toán từ hồi còn sinh viên cách đây mười mấy năm, gần 15 năm thì đã có những bài toán về thuật toán ở trên mạng rồi, Khi tôi đi thi đấu ở nước ngoài thì tôi mới nhận thấy rằng rất nhiều công ty hỏi về thuật toán. Họ thích hỏi về thuật toán như vậy vì khi ứng viên gặp các bài thuật toán khác nhau, từ đó họ hình thành nên kỹ năng giải quyết vấn đề, gọi là problem-solving, kỹ năng đó là một kỹ năng cần thiết trong lĩnh vực CNTT.
Thuật toán tối ưu không gian bộ nhớ và tăng tốc độ xử lý như thế nào?
Thực ra thuật toán gặp trong hằng ngày đời sống của mình. Nếu như bạn đi siêu thị, bạn sẽ có một thao tác cuối cùng trước khi ra siêu thị đó là bạn đứng tính tiền, nếu như bạn đứng tính tiền như vậy và người ta cho tính tiền thoải mái, người ta cho ai lại cũng tính tiền mà không cần phải xếp hàng, thì không gian chỗ đó sẽ trở nên rối và người tới trước, chưa chắc được tính tiền trước, đôi khi người tới sau họ chen lên họ tính tiền, tức là mình không có quy định gì hết. Còn nếu như mình quy định ai tới trước người đó tính tiền trước, ai tới sau tính tiền sau thì như vậy mọi người sẽ sắp theo hàng thì không gian chỗ đó sẽ bình thường, sẽ không bị rối và tốc độ để người tính tiền xử lý sẽ nhanh hơn, đó là một thuật toán ứng dụng bên ngoài, mà thường trong thuật toán người ta gọi là queue, hàng đợi. Tức là nó có trong đời sống hằng ngày của chúng ta mà chúng ta không thấy thôi.
Vì sao học thuật toán ở đại học lại “kém hấp dẫn” với nhiều bạn sinh viên? Nếu không học thuật toán thì sẽ bỏ lỡ những cơ hội nào?
Thực ra thuật toán cũng là một hướng đi trong ngành CNTT thôi, nếu như mình không học thuật toán nhưng mình học thứ khác thì mình cũng có con đường, định hướng nghề nghiệp tốt, nhưng mà khi mình học thuật toán mình sẽ có thêm nhiều lựa chọn. Còn về trường đại học, chúng ta có một số môn dạy về thuật toán, hình như 2 hoặc 3 môn, thực ra số lượng này ko đủ, thuật toán thực ra rất là khó và số lượng để chúng ta học và làm việc được với thuật toán thì cần ít nhất 6 đến 7 môn. Với số lượng như vậy mà nhét hết vào chương trình để giảng dạy thì không đủ, tại vì không đủ thời gian cho những môn khác, người ta cần đa dạng hóa nhiều hướng đi chosinh viên như vậy thì cắt bớt, bỏ bớt, như vậy sẽ gây ra hiện tượng khó hiểu, tại vì chúng ta dạy theo cấp bậc thì sẽ dễ hiểu hơn, còn chúng ta dạy 3, dạy 7, dạy 8, như vậy khi người học họ học vào, họ sẽ không bước lên từ từ, họ cảm giác là mình phải bước với lên mới hiểu, đâm ra gây tâm lý thuật toán khó hiểu, nhưng với tôi thuật toán không khó hiểu lắm nếu như chúng ta học từng cấp bậc một.
Thuật toán có thể tự học được không? Sẽ có những khó khăn gì nếu tự học?
Khi mình tự học mình phải trả giá một vấn đề rất lớn đó là thời gian, thực ra trong CNTT bất kỳ một hướng đi nào mình cũng có thể tự học, mình có thể tự học web, tự học AI, kể cả thuật toán cũng có thể tự học, tuy nhiên cần phải suy nghĩ lại đó là mình cần trả một cái giá lại đó là thời gian, tại vì mình tự học là mình phải tự tìm hiểu tất cả mọi thứ, mình sẽ có hướng đi sai và mình phải quay lại mình học, có những thuật toán mình cứ nghĩ là mình tự học nhưng thật ra người ta đã bỏ từ lâu rồi, khi mình tự học xong hết rồi thì khi quay lại người ta đã học được một cái mới hơn, hay hơn để giải quyết vấn đề đó, và như vậy mình phải học một cái khác bổ sung vô, như vậy mình phải mất một khoảng thời gian rất là nhiều. Tuy nhiên việc tự học sẽ giúp mình sau này có một power rất là mạnh, nghĩa là mình đã sai và làm lại, sai và làm lại thì tự nhiên mình có một nguồn năng lượng tự học rất là nhanh nhưng như tôi đã nói là mình phải trả giá lại thời gian của mình, thời gian của mình mất rất là nhiều. Thì mình phải cần cân nhắc, sẽ học nhưng không phải là học ở trung tâm, mình có thể học ở người anh của mình, một người bạn của mình hay là người thầy nào đó mà mình có thể giao tiếp được thường xuyên, họ sẽ chỉ cho mình hướng đi để mình tự học tốt hơn. Chứ khi mình tự học, mình lên đọc sách, mình coi video thì như vậy tốn rất nhiều thời gian.
Một số nguồn tài liệu có thể tự học thuật toán
Theo tôi thấy thường tự học chúng ta sẽ đi đọc blog hoặc là xem video, như là bạn có thể vào các trang như Geeks for Geeks, nó là một trang viết rất nhiều thuật toán trên đó và có những video mẫu minh họa, rồi mình xem và sau đó có thể làm ngay luôn bài tập trên đó, đó là một trang khá là hay, tôi nghĩ đó là một nguồn có thể đọc được và thực hành luôn. Còn sách thì đọc rất tốt nhưng lại nhanh chán, tại vì người ta viết rất formal, cuốn sách mà tôi nghĩ mới học thuật toán mà có thể đọc được đó là Introduction to Algorithm, cuốn sách đó đọc khá là chuẩn.
Ở góc nhìn từ một trung tâm đào tạo về thuật toán, anh nhận thấy mọi người đang có mối quan tâm thế nào đối với việc học thuật toán?
Như tôi đã nói, nếu mà ta tự học, tự tìm thì thuật toán trên mạng sẽ không đưa cho chúng ta từ số 1, số 3, số 4, số 5, số 6, mà khi mình tìm vô, mình tìm số 1, sau đó mình làm bài khác sẽ ra số 7, tự nhiên mình sẽ cảm thấy sao cái này khó hiểu quá và mình làm không được, tại vì tài liệu mình đọc được nâng cấp lên mà mình không biết, sau đó mình quay lại mình đọc số khác thì lại ra số 6, chứ không ra số 2. Nên dần bị tình trạng mình nản, rồi mình bỏ thời gian, rồi mình lại học lại, rồi đi lại từ đầu nên đâm ra mình học hoài mình không tiến bộ. Nên tôi nói là nếu chúng ta tự học, tự tìm hiểu thì tốt nhất nên tìm người nào đó họ cho mình được lời khuyên, hoặc là khi mình đọc tài liệu, mình đọc một cái thôi , mình chú tâm mình đọc một cái đó thôi, đọc hết cái đó rồi hẵng tìm cái khác, chứ không mình sẽ bị tràn lan kiến thức, không chú tâm vào 1 cái.
Quy mô thị trường giảng dạy về thuật toán hiện nay ra sao? Nếu có một đơn vị khác tham gia vào thị trường giảng dạy thuật toán thì lợi thế của BigO Coding là gì?
Thực ra thị phần về thuật toán hiện nay chưa lớn lắm, so với lứa lân cận của mình, chẳng hạn Thái Lan, Singapore, mở rộng ra là Trung Quốc, Ấn Độ hoặc là Mỹ, thì thị trường VN khá là nhỏ, chưa lớn lắm. Do tôi nghĩ môi trường Việt Nam còn khá là nhiều những công ty về gia công phần mềm, mà thuật toán thông thường họ sẽ cần những công ty khởi nghiệp, những công ty mà họ có sản phẩm, và họ cần tối ưu hóa sản phẩm đó hơn là những công ty gia công phần mềm nên là tôi thấy thị trường hiện tại đang có nhưng rất nhỏ, không lớn lắm.
Hiện tại thì tôi đang mở là 3 khóa, tôi chia theo màu, , blue, orange, red và black. Mà hiện tại ở Việt Nam mình chỉ mở được 3 khóa thôi, tại vì số lượng người học thuật toán nó chưa có đủ nhiều để mình có thể dạy tiếp những cái khóa sau.
Thì khóa đầu tiên, khóa green, dành cho những người mà họ chưa biết gì về lập trình, họ có thể học được mà không cần bài test đầu vào. Còn khóa blue, thứ 2, khóa chuyên giảng dạy về thuật toán, nhưng chủ yếu về đồ thị, khóa đó chỉ cần biết lập trình thôi, không cần biết thuật toán, vô sẽ dạy lại từ đầu về thuật toán, nhưng bạn phải rành lập trình rồi, rành syntax này nọ hết rồi. Khóa thứ 3 thì phải có bài test đầu vào, vì đó là khóa rất khó, có liên quan tới thuật toán, có 30-40% liên quan tới toán học nữa, mình phải rèn thêm về toán học để tối ưu hóa nữa, chỉ có khóa 3 có bài test đầu vào. Còn 2 khóa còn lại thì tôi hi vọng rằng 1-2 năm tới tôi sẽ được mở khóa đó, tức là có nhu cầu về khóa đó để tôi mở, hiện tại thì ở TQ, Ấn Độ thì họ đều có những cái lớp tới màu red và black luôn rồi, ở Việt Nam thì chưa, nhưng tôi hi vọng là sẽ được.
Anh hãy chia sẻ rõ hơn về chương trình đào tạo thuật toán tại Việt Nam và thế giới
Đối tượng tham gia thuật toán hiện tại theo tôi thấy khá là phong phú, tiểu học cũng có học. Xong có khi mình nghe thấy, tiểu học học cái gì trời, học cái này tính toán nhức đầu, nhưng mà tôi thấy, khi tôi đi thi đấu bên nước ngoài, đặc biệt ở những nước châu Âu, tôi thấy mấy bạn nhỏ tiểu học đã học rồi, nhưng mà các bạn học thì cũng đơn giản thôi, ví dụ là cho con gấu bị lạc trong mê cung, làm sao đó dẫn con gấu đó ra theo đường ngắn nhất chẳng hạn, người ta tiếp cận những bài đơn giản như vậy, nên là tiểu học cũng có thể học được, các bạn THCS chắc chắn có thể học được rồi , chúng ta học từ từ, rồi quen; những bạn THPT chủ yếu học để đi thi, đặc biệt là thi quốc gia, thì khi bạn có giải quốc gia thì bạn sẽ được tuyển thẳng đại học. Còn đối tượng tiếp theo bên tôi là những người đi làm. Người đi làm thì có hai dạng, một là muốn áp dụng thuật toán vào bên sản phẩm của họ, để họ tối ưu hóa giai đoạn nào đó mà đang bị mất thời gian, Còn đối tượng thứ hai là họ muốn có con đường nghề nghiệp khác hơn bình thường, nghĩa là họ muốn qua Singapore làm việc, họ muốn qua Canada, qua Mỹ, qua Úc, v.v….; thì ở đó những công ty lớn đầu vào thường là thuật toán nên là các bạn cần phải luyện, các bạn đó chủ yếu học để chuẩn bị cho phỏng vấn, nên đối tượng khá là rộng, nhưng chủ yếu bên tôi là người đi làm với sinh viên.
Liệu việc học thuật toán từ đại học có phải là hơi muộn? Vì sao nên học thuật toán ở giai đoạn sớm?
Như tôi nói thì thuật toán nó rất là rộng, nó phủ nhiều cái lĩnh vực khác nhau, và vì vậy nếu như mình không dành thời gian nhiều để luyện nó thì đôi khi mình sẽ bị lủng kiến thức, nếu như mình có 1 cơ hội tốt luyện từ nhỏ thì mình sẽ học dần dần, sẽ đỡ hơn. Tuy nhiên là không phải ai cũng có cơ hội là học từ nhỏ, đôi khi chúng ta ở dưới quê, tiếp xúc với máy tính đã khó rồi, huống chi là thuật toán, thì tôi nghĩ rằng là nếu như chúng ta chưa tiếp xúc thuật toán, từ cấp 3 hay là từ cấp 2 mà mình học ngay khi vào đại học thì cũng không có vấn đề gì cả, chỉ có 1 vấn đề duy nhất là liệu mình có đủ cái quyết tâm để mình theo nó hay không, mình phải học gấp 2 gấp 3 lần người khác, nếu mà mình có đủ quyết tâm, dành riêng thời gian cho nó thì tôi nghĩ nó vẫn rất là tốt. Ví dụ như tôi có mấy bạn nữ học chuyên văn, chuyên tôi vẫn vào được các công ty lớn ở Mỹ, Twitter hay Facebook, vẫn bình thường và các bạn đó học 2 ngành không chuyên về tin học rồi và lại xa rất xa so với tin học, chỉ mới bắt đầu học từ đại học thôi, thì bạn vẫn vào được, thì tôi nghĩ rằng là chúng ta đừng nghĩ là “Ô, chúng ta học bây giờ nó quá trễ rồi, học từ năm 2, năm 3 là quá trễ, mà quan trọng là ta danh bao nhiêu thời gian từ đây cho đến lúc mà chúng ta bắt đầu, phỏng vấn thuật toán, làm những cái việc về thuật toán thế nào, dành đủ thời gian như vậy là sẽ được.
Điểm mạnh và điểm yếu của lập trình viên Việt Nam so với khu vực? Đâu là thế mạnh mà LTV VN chưa khai phá hết?
Thì thực ra khi mà tôi dẫn dắt đội tuyển như vậy thì trong nhóm các bạn thường rất là giỏi rồi, thì tôi đánh giá thì tôi sẽ đánh giá chung các bạn lập trình viên ở Việt Nam so với những bạn nước ngoài nó như thế nào nó sẽ hợp lý hơn. Có 1 điều mà tôi thấy là những bạn học công nghệ thông tin ở nước mình họ thường rất là chăm, chăm chỉ lắm, và nói 1 câu bình dân chút xíu là họ chịu cày, rất là chịu cày, khi có 1 cái mục tiêu gì đó thì rất là chịu cày, đó là ưu điểm rất là tốt, tuy nhiên tôi thấy có 2 khuyết điểm đáng suy ngẫm, thứ 1 là họ dễ nản, tức là khi có 1 vấn đề mới xuất hiện, không còn quen thuộc so với họ trước đây, rất là dễ nản, nhưng mà công nghệ thông tin thường nó sẽ thay đổi rất là nhanh, nên dễ nản như vậy thì ta sẽ không đến được đích cuối cùng. Cái thứ 2 là rào cản về ngôn ngữ, đây là cái rào cản khá là lớn, thí dụ bạn biết cái thuật toán là cái mức 7 bạn trình bày cho người khác bằng ngôn ngữ khác, chỉ ở mức 3 thôi, thì trình độ thuật toán của bạn cũng chỉ là 3 thôi, chứ không có 7, cái rào cản ngôn ngữ nó rất là nguy hiểm là bình thường mình muốn đi ra bên ngoài, thành 1 công dân toàn cầu, thì mình phải giao tiếp bằng tiếng Anh, thông thường cái này những bạn Việt Nam hay yếu thế hơn so với những nước khác, đó là 2 khuyết điểm tôi thấy rất đáng lo, nhưng mà bù được cái ưu điểm của mình, mình chăm chỉ vô những cái gì mà mình thấy mình thiếu là được.
Career Path của lập trình viên thiên về Thuật toán là gì và đâu là đích đến cuối cùng?
Tôi lấy ví dụ cụ thể học trò tôi luôn, mục tiêu của bạn đó là vầy, đầu tiên là các bạn sẽ làm ở 1 số công ty startup ở Việt Nam, nho nhỏ thôi, sau đó các bạn sẽ vào làm ở những công ty lớn hơn ở Việt Nam, khi các bạn đã bắt đầu có 1 số kinh nghiệm rồi, các bạn học thuật toán, sau đó các bạn sẽ qua các nước lân cận đặc biệt như là Singapore, các bạn làm ở 1 công ty startup lớn hơn, đó là ‘unicorn’ rồi. Sau đó các bạn có thể qua Úc, Canada hoặc thậm chí qua Mỹ, để các bạn có thể tiếp cận các công nghệ khác tốt hơn, thì cuối cùng tôi thấy được khi các bạn đã làm ở những công ty như Google, Facebook ở Mỹ rồi, nếu làm nhiều năm rồi thì các bạn có thể quay trở lại startup do chính cái sản phẩm của mình, và bạn áp dụng vô những cái thuật toán mà mình đã từng biết đã từng học để mình giải quyết 1 cái vấn đề nào đó trong cuộc sống bằng cái ứng dụng của chính mình, và đó là con đường mà các học trò của tôi đang đi như vậy.
Được biết có rất nhiều cuộc thi dành cho lập trình viên nói chung và cuộc thi về thuật toán nói riêng. Anh nhận xét gì về những “sân chơi” này? Anh có khuyến khích các bạn rèn bản thân qua các đấu trường này không?
Hiện tại thì nói về cuộc thi, thì Việt Nam mình chưa có nhiều đâu, Việt Nam mình là rất ít, chúng ta phải có nhiều hơn những cuộc thi về thuật toán, chủ yếu hiện nay các bạn học thuật toán là các bạn thi của nước ngoài thôi, Việt Nam rất là ít, những cuộc thi mà tôi thấy rất là hay, chẳng hạn như cuộc thi của Google – Google Code Jam, Facebook Hacker Cup, đó là những cuộc thi mà chúng ta nên tham gia, đó là những công ty về toàn cầu, và những câu hỏi họ ra không phải là dùng để đánh đố mình 1 cái vấn đề gì đó mà có thể trong đó là 1 cái dự án gì đó của họ, mà họ chưa thể tối ưu hóa được, và họ nhờ 1 cái cộng đồng thi đấu có thể giải quyết được cái vấn đề đó hay không và khi mà họ có được 1 cái solution từ thí sinh rồi, thậm chí họ có thể gửi cái lời mời làm việc fulltime cho cái người đó, hoặc là họ lấy cái solution đó họ về để họ tham khảo giải quyết vấn đề của mình, nên đó là những cuộc thi mà chúng ta nên tham gia, nhưng nó rất khó nha. Nhưng bạn không cần phải đứng top 100 hay là 200, top 10000 cũng được, vì rất nhiều người thi trên thế giới, top đó cũng là rất giỏi rồi, và kỹ năng như vậy cũng rất tốt rồi.
Một số tips trong quá trình phỏng vấn tại những công ty lớn như Google, Facebook
Có 1 cái kinh nghiệm thì tôi chia sẻ thế này, thông thường thì những bạn ứng viên phỏng vấn sợ hỏi lại cái câu hỏi mà người phỏng vấn hỏi, thường mình vào công ty công nghệ lớn người ta hỏi mình 1 câu hỏi thì điều quan trọng là mình phải làm rõ câu hỏi đó cái đã, đôi khi họ cố tình họ hỏi không đầy đủ, họ để cho cái người ứng viên hỏi lại họ để làm rõ ràng hơn câu hỏi, đó cũng là 1 cái cách mà để sau này người này join vào công ty của mình, tôi đưa cho anh 1 cái project chung như vậy, anh không hiểu anh vẫn cứ làm, mà không hỏi lại, sau này làm ra xong rồi mới biết làm sai, rất là nguy hiểm, nên kinh nghiệm của mình là sau khi nghe câu hỏi xong, thì mình phải rõ câu hỏi thật là rõ cái đã, thậm chí là có thể cho cái ví dụ vào để hỏi người khác rằng là với cái ví dụ này của tôi thì đúng như yêu cầu của anh là xuất ra kết quả này hay không, khi mà mình đã rành được, mình đã rõ được câu hỏi rồi, thì lúc này mình mới bắt đầu vào câu trả lời của mình, thì vào cái câu trả lời của mình thì mình lại có 1 cái kinh nghiệm nữa là phải nói ra những gì mình suy nghĩ. Bạn không thể đứng bạn viết hay ngồi bạn code từ đầu đến cuối xong rồi nói “Ờ tôi làm xong rồi, kết quả phải là như vầy” là ngày mai bạn rớt liền. Khi viết ra 1 dòng thì bạn phải nói ra là cái dòng này tôi muốn làm cái gì đó, thí dụ: tôi muốn khai báo ra 1 cái mảng gồm 10 phần tử, để cái mảng này nó sẽ lưu những cái kết quả mà sau khi tôi chạy vòng lặp nó bỏ chạy trong cái mảng, tức là bạn phải thinking out loud của mình, nói ra những gì mình suy nghĩ, thì khi mình nói ra như vậy thì người ta sẽ nghĩ “bạn này được, tức là tôi đang bắt nhịp với lại solution của anh” và điều này rất là tốt. Mình phải nói ra cái suy nghĩ của mình, thì khi mình nói ra suy nghĩ của mình thì nó sẽ gặp 1 cái trở ngại là có thể mình đúng, có thể mình sai. Nó sai không có vấn đề gì cả, nếu vấn đề đó sai thì mình nói là “hồi nãy mình nghĩ nhưng nó bị thiếu cái chỗ này, nên bây giờ tôi có thể cập nhật lại chỗ này được hay không, thì mình cứ cập nhật thôi. Hoặc là “cái giải pháp của tôi đưa ra vừa rồi nó không có tối ưu lắm, anh có thể cho tôi 5p suy nghĩ để tôi tối ưu hóa cái này được hay không, thì người ta sẽ rất là thích những cái ứng viên như vậy, chúng ta trao đổi thẳng thắng và nó giống như là 1 cuộc trò chuyện giữa tôi với bạn như vầy, nó bình thường và nó không phải là 1 buổi phỏng vấn nghề nghiệp này nọ, nó quá quan trọng, xong rồi thì chúng ta vui vẻ nhận kết quả như vậy thôi.
Xin cảm ơn phần chia sẻ từ anh Tùng. Hy vọng qua bài viết này các bạn lập trình viên, hay các bạn sinh viên có đam mê với ngành CNTT có thêm những thông tin hữu ích về thuật toán cũng như cách nâng cao kỹ năng phù hợp. Từ đó, xây dựng cho bản thân những bước đệm chắc chắn trong sự nghiệp.
Nguồn: TopDev Blog