Luyện mấy bài thuật toán khó (level hard), chỉ để pv rồi quên, có thừa thãi, tốn time ko?

Tớ tạo topic này để thảo luận về chủ đề này nhé! :smile:

4 Likes

Còn tùy bài. Có bài cần toán, có bài không(ít nhất kiến thức toán rời rạc cũng phải vững mới làm được). Chuyện cần cho đi làm hay không tất nhiên là CẦN vì phỏng vấn ai cũng dùng những bài này để test - dù công ty lớn hay nhỏ.

Theo mình thì nếu chỉ chăm chăm “nắm kiến thức đi làm” không thì khó trụ với những người luyện những bài này vì ngoài nó “khó”, “không thực tế” ra thì nó còn giúp luyện năng lực giải quyết vấn đề nữa!

mk thấy ko thực tế lắm, thứ nhất mấy bài đó chỉ ở các công ty top 1 thế giới dùng để pv để lọc vì quá động người apply, còn về ứng dụng thế giới thực gần như bằng 0. mk hỏi có cần khi đi làm ko, chứ mk ko hỏi có cần khi đi pv ở công ty top 1 ko. có lẽ bạn chưa hiểu câu hỏi mk hỏi.
mk thấy đa số mọi người đều đồng ý thế giới thực ít khi có bài toán đó. Và có chỉ tỷ lệ rất nhỏ.

1 Like

Tùy trường hợp vẫn áp dụng toán trong lập trình. Nếu framework không hỗ trợ thì bạn phải tự viết từ đầu.

Ví dụ đây là thuật toán của extension chặn quảng cáo youtube mà bạn vẫn đang dùng hàng ngày https://blog.ajay.app/voting-and-pseudo-randomness-or-sponsorblock-or-youtube-sponsorship-segment-blocker

mk ko muốn trả lời sâu vấn đề này vì ko muốn lập 1 topic để hỏi, còn như mình nói mình đang nói mấy bài toán chuyên tin quốc gia toàn vẽ mấy công thức lý thuyết số như cái đề vừa rồi, mk thấy đi làm 1% là dùng rất ko thực tế. Luyện mấy cái đó hơn phí time, nếu ở việt nam thời gian mk tập nói english có lẽ lương x2 hơn. ( đó là suy nghĩ cá nhân của mình, mk ko muốn reply thêm đơn giản mk đang bận, ko có thời gian, ko muốn lập topic, ko muốn nhận thông báo)

2 Likes

luyện ba cái này sao gọi là phí time. Học sinh thì luyện để thi vào trường chuyên. Sinh viên luyện để đi phỏng vấn. Cái ngành này nó thế, ko giống như mấy ngành khác, vd như để dạy mầm non ko ai đòi thi thố đạo hàm tích phân bất đẳng thức. Có lẽ tại nghề này “ai cũng học được” nên để lọc cv người ta thêm 1 vòng thách đố. Vừa đố IQ vừa đố độ kiên trì cày cuốc nữa.

1 Like

cơ bản những cái bài toán cao siêu này đúng là không cần và học phí time thật (trừ khi để đi pv) vì nó không thực tế, mà ôn pv xong cũng quên béng vì không đụng nhiều. buồn cười cái nữa là ngay cả với các công ty to FAANG cũng hỏi khó nhưng vào chưa chắc đã làm đúng như pv (trừ HFT + Quant). bên trời tây dân chúng cũng rất không thích trend whiteboard + leetcode này vì dễ gặp monkey + bỏ sót engineer giỏi. nhưng khi đặt vào vị trí người tuyển dụng, bạn sẽ thấy không có cách nào nhanh và tốt hơn.

cứ tưởng tượng bạn mở công ty quỹ lương chỉ đủ 50 người, nhưng có 1000 người nộp, thì bạn sẽ làm sao để lựa ra top 50 người hợp lý nhất? suy tính thế nào thì bạn cũng sẽ bị rơi vào vòng lặp whiteboard thôi. và thật ra đi pv nhiều ngành khác bạn sẽ thấy, IT là dễ thở hơn rất nhiều so với các ngành về finance, business rồi đó, chỉ cần chịu ôn là đậu khá cao rồi :smiley: vì các ngành đó còn nhiều trò bẩn bựa khác nữa mà nhiều khi bạn ôn cũng không được.

5 Likes

rèn luyện thuật toán thì cũng là rèn luyện tư duy thôi ko có gì to tát cả, tư duy nhanh nhạy sẽ giúp giải quyết các vấn đề thực tế tốt hơn, vậy thôi
Hơi dài dòng quá, nhưng theo góp ý của mình thì ko nên quá rạch ròi giữa lý thuyết và hoạt động thực tiễn, đôi khi cũng nên nghiên cứu “chuyên sâu” một chút, “hàn lâm” và “phi thực tế” một chút, không chỉ giúp tư duy tốt hơn, mà còn rèn được tính sáng tạo.

1 Like

Theo mình thấy thì pv hay công việc còn nhiều thứ khác để học / luyện ngoài mấy bài thuật toán. Nếu nắm chắc mấy thứ khác rồi mà có thời gian thì có thể luyện không thừa :smiley: .
Với bản thân mình thì còn vô số thứ khác hữu ích hơn để học nên cũng chưa đầu tư nhiều thời gian vào luyện thuật toán. Với chatgpt ra đời cách chúng ta code có thể rất khác, giờ nhiều khi lười viết logic có thể ném luôn vào chatgpt là nó ra luôn rồi.

1 Like

mình nghĩ là ko, vì sao ? vì nếu bạn ko luyện nó bạn sẽ ko thể vượt qua đc pv , và mình coi nó như 1 cái giá phải trả để đc vào đúng cty mà mình muốn , thật là quá tốt nếu vừa đc áp dụng kiến thức mình luyện vào chính công việc , để nó ko thừa thãi, nhưng cuộc sống ko dễ dàng như vậy , nên phải chấp nhận cái giá đó thôi bạn =))

1 Like

Mấy cái thuật toán khó giống như là để lọc ra người cực kỳ thông minh. Mà người cực kỳ thông minh thì tuyển vào làm cái gì cũng được, không sợ người ta làm không nổi.

Lấy ví dụ đi thi học sinh giỏi toán cấp quốc gia, quốc tế. Ai đoạt giải toán cấp quốc gia, quốc tế cũng đều xuất sắc cả, lấy học bổng, tuyển thẳng vào trường xịn. Người ta đâu có cần phải giỏi cả lý với hóa để thi tốt nghiệp như người khác. Nhưng mà, đa số mấy đứa giỏi toán thì cũng giỏi cả lý lẫn hóa, chả cần kiểm tra lý hóa nó làm gì cả.

Như vậy, nếu một người thông minh đi thi học sinh giỏi quốc gia thì có đậu không? Tất nhiên đa số là vẫn rớt nếu không luyện thi. Cũng tương tự như bài thuật toán khó, nếu bạn thấy mình giỏi nhưng bạn không luyện thì bạn vẫn không làm được. Việc luyện thi toán khó là việc của mấy đứa cực kỳ thông minh cạnh tranh với nhau. Đậu = thông minh + chăm chỉ luyện đề. (Thông minh thiên tài thì thời gian luyện đề ít hơn. :rofl: )

Vậy theo bạn luyện thuật toán có đáng giá không?
Vậy theo bạn luyện toán để đi thi học sinh giỏi quốc gia có đáng giá không?

Nó chỉ đáng suy nghĩ nếu bạn cảm thấy mình đủ thông minh. Còn nếu bạn thấy nó vượt khả năng thì mạnh dạn chọn hướng khác.
Mình tự nhận là người không đủ thông minh để giải các bài thuật toán/toán khó :smiley: Nên mình chẳng thèm tốn thời gian vào nó làm gì cả. Nhưng mà mình có luyện các bài thuật toán dễ + trung bình nhé =)).

2 Likes

mình thì thấy thừa thãi nhé

trừ các công ty làm về game, ai, big data đồ, cần sử dụng toán tuyệt đối ra, thì trong ngành này chả có công ty nào cần tới dev giỏi toán hay quá giỏi thuật toán cả

nhiều khi vào công ty cũng chỉ nhận task rồi làm, như 1 cái máy, chứ 90%(có khi 100%) không sử dụng tới thuật toán tí nào, cứ ráp google vào thôi

cá nhân mình tự nhận không biét thuật toán nào, vẫn sinh tồn trong ngành dc tầm 15 năm nay

7 Likes

Cá nhân /me thì thấy thảo luận câu hỏi này mới tốn time này. Trong câu hỏi vốn dĩ có quá nhiều “giả thuyết” làm câu hỏi vô nghĩa đi. Để /me lấy 1 ví dụ so sánh có vẻ tương tự:

Đi ăn sơn hào hải vị (tôm hùm cua hoàng đế), chỉ để no rồi thôi, có thừa thải, tốn time ko?

Câu hỏi này thì chắc dễ thấy là chẳng cần thảo luận làm chi rồi nhỉ

4 Likes

Người ta vẫn thảo luận về vấn đề ăn sơn hào hải vị mà.
Phổ biến nhất là dạy người giàu cách tiêu tiền :kissing:

3 Likes

Còn nhiều thứ “vô lý” hơn, vd như xin vào làm cho IBM bắc mỹ, vòng đầu tiên là làm 1 bài IQ test. Cái này áp dụng cho hầu hết các vị trí chứ không riêng gì mãng IT.

Nếu ai chưa từng “luyện” môn này thì coi như rớt từ vòng gởi xe.

2 Likes

Mình đi làm và pv không thấy họ hỏi mấy cái thuật toán phức tạp hoặc hàn lâm.
Thay vì đó họ hỏi mấy cái rất thực dụng như:
Em biết design pattern không, biết singleton không, biết smart pointer không, khác nhau giữa linkedlist và vector là gì…
Rồi hỏi về các kỹ năng khác như cách quản lý dự án, cách xử lý sự cố, cách phân chia task, quy trình nọ kia ….

Những thuật toán hàn lâm, phức tạp và việc tự triển khai nó vẫn có giá trị nhất định nhưng không phải luôn có lợi ích và như nhau ở mọi trường hợp.
Đa số việc triển khai nó sẽ không phù hợp.
Bạn hiểu rõ và tự triển khai được thì tất nhiên tốt, nhưng không hiểu quá sâu cũng không phải điều gì đó quá thất bại.

5 Likes

Và rồi nếu ai cũng nghĩ như bác, thì khi thực sự xuất hiện các vấn đề như thế, ai sẽ là người đứng ra giải quyết?
Thực ra mình nghĩ đó hoàn toàn là về mục tiêu của mỗi người, chứ nếu bác đi làm phụ hồ thì có cần code với thuật toán làm gì đâu đúng không =))
Với lại đó là bác chưa vào các công ty công nghệ cần thuật toán chứ tìm đường đi trên bản đồ đơn giản nhất cũng dùng thuật toán A*, không biết bác đã tìm hiểu về thuật toán này chưa.

1 Like

Tớ nghĩ cậu đang hiểu nhầm context của cuộc trò chuyện, dù tớ hiểu ý cậu, sẽ có job nào đó cần nhiều kỹ năng về thuật toán, và đó là job mà việc phỏng vấn thuật toán là điều bắt buộc.

Vấn đề ở đây là, có rất nhiều job trong IT industry không sử dụng thuật toán nhiều trong công việc hàng ngày, nhưng vòng phỏng vấn lại luôn sử dụng các bài leetcode trong vài vòng để tuyển chọn.

Mặt khác, cậu không thể kỳ vọng bất cứ ai được đào tạo trong ngành này có thể ngay lập tức implement được binary search một cách hoàn hảo trong 15p (cho dù họ hiểu rõ concept và cách thức hoạt động của nó), đặc biệt là khi họ còn chẳng phải implement giải thuật đó vài năm, và họ là front-end developer. Để làm được điều đó, cần rất nhiều luyện tập. Khối lượng luyện tập còn nhiều hơn nữa với bài hard (rất khó để cậu có thể nhìn 1 bài hard leetcode lần đầu, nhìn ra cách làm và cài đặt trong 15p, trong một buổi live coding interview, nơi cậu phải nói những gì mình nghĩ, trừ khi cậu đã làm bài đó rồi - và đó là lý do cậu phải luyện bài hard leetcode để chuẩn bị phỏng vấn :sweat_smile: ).

Lượng thời gian và công sức bỏ ra để luyện tập việc giải các bài leetcode khó, để qua được một vài vòng đầu của một quy trình phỏng vấn, có lẽ không xứng đáng lắm, nhất là khi cậu ứng tuyển vào vị trí front-end engineer của tập đoàn công nghệ đó :sweat_smile:

P/s: A* là thuật toán cơ bản được dạy ở đại học, tớ nghĩ có lẽ hầu hết mọi người được đào tào trong ngành này đều biết thuật toán đó :sweat_smile:

3 Likes

mình thấy giờ cty tuyển nó cũng cân bằng cái chuyện pv thuật toán rồi đấy chứ, những vị trí ko cần nhiều thuật toán, nó chỉ pv những thuật toán rất cơ bản mà, còn cty lớn nó cần siết đầu vào thì nó nâng độ khó lên đó bạn, còn cty nào mà kiểu pv thuật toán cho thật khó để thể hiện thì thôi xin cíu =))

4 Likes

Nói cũng có lý phết.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?