thắc mắc Phỏng vấn Algo có đươc dùng List thay cho array c#?

Tôi muốn hỏi cụ thể ntn nhé:

Ví dụ vì lí do gì đó tôi quen dùng List hơn, nên tôi sẽ bảo trước với ng pvan tôi convert ra list cho quen tay, rồi tôi vẫn giải thích đc là delete vs add sẽ là O(n) thì có đc k ông ?
Ko vấn đề gì, bào toán cần nhiều lần xử lý delete/add thì bảo convert sang list cho tiện xử lý, nói lý do tại sao array xử lý caid này phức tạp hơn list ... Pv giải thuật thì chú trọng vào ý tưởng giải quyết vấn đề thôi
Kể cả ông dùng JS khi delete/add 1 phần tử vào array thì người pv cũng sẽ hỏi thôi, đừng thấy nó có sẵn hàm delete/add mà nghĩ nó mặc nhiên làm đc, và người pv ko hỏi gì
 
Ko vấn đề gì, bào toán cần nhiều lần xử lý delete/add thì bảo convert sang list cho tiện xử lý, nói lý do tại sao array xử lý caid này phức tạp hơn list ... Pv giải thuật thì chú trọng vào ý tưởng giải quyết vấn đề thôi
Hmm phức tạp hơn thì chỉ có là do mình phải tự viết thêm hàm add remove, hay là về bản chất mà có trường hợp array phức tạp hơn thế bác
 
Hmm phức tạp hơn thì chỉ có là do mình phải tự viết thêm hàm add remove, hay là về bản chất mà có trường hợp array phức tạp hơn thế bác
Thằng JS là nó viết hộ bạn rồi chứ mặc định array làm gì có delete, add thêm phần tử , thế nên nếu bạn dùng JS thì dễ người pv sẽ hỏi cái đó
 
Sao thằng c# ko viết hộ luôn nhỉ :))
Bởi vì nó ko thực sự cần thiết, nếu dữ liệu cần thêm, xoá nhiều thì người ta dùng List, Tree ..các ông dùng ko hiểu bản chất, dùng array rồi suốt ngày delete/add tùm lum, tràn lan rồi cuối cùng performance như hạch :beat_brick: Mấy ông nên học basic từ thằng C ấy, để hiểu làm tay hết các tính năng nó cần làm như thế nào.
 
Đọc comments xong thì em thấy thớt phụ thuộc vào ngôn ngữ quá nhiều, gì mà cứ convert/dùng hàm add/remove các thứ.

Như các thím khác nói rồi, algo là algo, bác viết mã giả cũng đc. Cái quan trọng là giải thuật để giải quyết vấn đề, còn việc implement giải thuật nó có quan trọng mấy đâu:). Giờ cho bác 1 đống built-in functions, nhưng bác kh có giải thuật hoặc giải thuật kh khả thi thì là failed, đơn giản thế thôi
 
Vô phỏng vấn thì thớt trao đổi mấy cái này với người phỏng vấn là được rồi. Mà mấy cái đặc thù ngôn ngữ không quan trọng đâu, chủ yếu là giải thuật mà. Mình phỏng vấn Algo bằng Js mà không biết 1 tí gì cú pháp của Js luôn mà, vào anh phỏng vấn phải chỉ mình cách khai báo biến, khai báo mảng... trong Js như nào. :p :p
 
Chào các bác giờ em đi phỏng vấn algorithm mà em dùng C# code, thì có đươc convert array trong đề bài thành List trong c# cho dễ xử lý ko nhỉ ??

Lý do là trong C# không hỗ trợ mấy hàm add, remove thao tác với các phần tử trong mảng dễ như JS
Cái này tùy vào người phỏng vấn. Hỏi trước cho chắc nha bạn. Theo ý kiến cá nhân, bạn nên chuẩn bị cho case xấu nhất là interviewer ko chấp nhận xài List.
 
Mình từng gặp trường hợp này rồi. Mình cũng giải quyết bài toán bằng cách ToList() xong dùng LinQ để giải quyết, code vài dòng là xong nhưng họ muốn mình code array và không dùng List, LinQ. Cty đó làm web server game và đang chuyển qua golang nên có thể họ muốn performance tốt nên không muốn dùng List hoặc họ muốn thử mình thôi. Mình cũng tính ngồi suy nghĩ rồi code mà thái độ của người phỏng vấn không được thân thiện lắm, cái giọng bắc khá gắt gỏng, nên mình bảo không biết làm để nhanh nhanh kết thúc buổi phỏng vấn.

ToList() là x2 space complexity rồi. Tưởng tượng cái array cả triệu element mà muốn thao tác gì lại tạo 1 list cả triệu element nữa sao dc. Chưa kể convert qua List thì thao tác truy xuất thành O(n), trong khi array là O(1). Ng ta test cái này cũng đúng thôi vì code tiện vài dòng nhưng lại ảnh hưởng performance rất lớn. Còn cái đoạn dưới là pbvm nha rồi nha. :baffle:
 
Sửa lần cuối:
Mình từng gặp trường hợp này rồi. Mình cũng giải quyết bài toán bằng cách ToList() xong dùng LinQ để giải quyết, code vài dòng là xong nhưng họ muốn mình code array và không dùng List, LinQ. Cty đó làm web server game và đang chuyển qua golang nên có thể họ muốn performance tốt nên không muốn dùng List hoặc họ muốn thử mình thôi. Mình cũng tính ngồi suy nghĩ rồi code mà thái độ của người phỏng vấn không được thân thiện lắm, cái giọng bắc khá gắt gỏng, nên mình bảo không biết làm để nhanh nhanh kết thúc buổi phỏng vấn.
Anh ko trả lời được thì nhận đi
Lại còn cái giọng Bắc :misdoubt:
Anh cứ thử ngồi gõ vài dòng get, add, delete 100k phần tử trong array và list rồi đo perf là biết ngay thôi mà.
Hỏi về Array và List là cái dễ nhất rồi,
Hỏi sâu nữa thì người ta sẽ hỏi về bản chất của arr và list, độ phức tạp của các method add/get/delete trong 2 thằng
Sâu hơn nữa thì hỏi tí về cách phần cứng xử lý array và list thế nào? tại sao nên dùng array
 
Nên hiểu biết qua về ASM để có cái nhìn sâu sắc về giải thuật. Mấy func dọn sẵn cho sài nó cũng chỉ là đang wrapper của một hoặc nhiều hơn một giải thuật nào đấy thôi.

Đi phỏng vấn thì lôi ra mà sài thoải mái, quan trọng là bigO đảm bảo cả về time lẫn space được tối ưu. Còn người pv họ sẽ hỏi về bản chất...kiểu như tại sao chỗ này sài pop mà không phải là move tail list...
 
Các bạn nói mình pbmn nên mình xóa comment rồi, mặc dù chả hiểu pbvm chỗ nào, mình ở SG nên nói vậy thôi, trước giờ pv anh nào cũng vui vẻ còn chia sẻ rất nhiều thứ, riêng lần đó cảm thấy tâm trạng rất tệ sau buổi nói chuyện. Mình có nói là mình biết array performance tốt hơn list mà. Mình đâu có dám đánh giá gì tới chuyên môn? Mình thừa nhận là dân trái ngành chỉ code CRUD thôi, và chưa thấy project C# nào xài array cả nên mình không quen. Phỏng vấn thì đơn giản là hợp hay không hợp, không hợp thì thôi, còn thái độ cách nói chuyện kiểu gắt gỏng thì thôi chả ham làm gì. Cty đó là Mecury Studio, chả phải tự nhiên mà nó ẩn comment itviec, ae thích thì cứ phỏng vấn.
 
Sửa lần cuối:
Các bạn nói mình pbmn nên mình xóa comment rồi, mặc dù chả hiểu pbvm chỗ nào, mình ở SG nên nói vậy thôi, trước giờ pv anh nào cũng vui vẻ còn chia sẻ rất nhiều thứ, riêng lần đó cảm thấy tâm trạng rất tệ sau buổi nói chuyện. Mình có nói là mình biết array performance tốt hơn list mà. Mình đâu có dám đánh giá gì tới chuyên môn? Mình thừa nhận là dân trái ngành chỉ code CRUD thôi, và chưa thấy project C# nào xài array cả nên mình không quen. Phỏng vấn thì đơn giản là hợp hay không hợp, không hợp thì thôi, còn thái độ cách nói chuyện kiểu gắt gỏng thì thôi chả ham làm gì. Cty đó là Mecury Studio, chả phải tự nhiên mà nó ẩn comment itviec, ae thích thì cứ phỏng vấn.
Giọng gắt gỏng thì chẳng ai thích cả, dù nam hay bắc đều thế thôi, ông chỉ cần bảo là người pv gắt gỏng là anh em trong này đồng tình ngay, thêm chữ bắc/nam vào là thành pbvm thôi.
mấy ông miền bắc hay bảo là nam thế này thế kia, mấy ông miền nam cũng hay bảo là bắc thế này thế kia, như nhau cả thôi =))
 
ToList() là x2 space complexity rồi. Tưởng tượng cái array cả triệu element mà muốn thao tác gì lại tạo 1 list cả triệu element nữa sao dc. Chưa kể convert qua List thì thao tác truy xuất thành O(n), trong khi array là O(1). Ng ta test cái này cũng đúng thôi vì code tiện vài dòng nhưng lại ảnh hưởng performance rất lớn. Còn cái đoạn dưới là pbvm nha rồi nha. :baffle:
Truy xuất theo index thì List cũng O(1) mà thím ? Hay list thím nói là Linked Lít ???
 
Chào các bác giờ em đi phỏng vấn algorithm mà em dùng C# code, thì có đươc convert array trong đề bài thành List trong c# cho dễ xử lý ko nhỉ ??

Lý do là trong C# không hỗ trợ mấy hàm add, remove thao tác với các phần tử trong mảng dễ như JS

Hỏi thôi. Như tơ hỏi nó bảo chỉ dùng array bình thường. Tự implement lại add với del thôi.:D

Sent using vozFApp
 
Anh ko trả lời được thì nhận đi
Lại còn cái giọng Bắc :misdoubt:
Anh cứ thử ngồi gõ vài dòng get, add, delete 100k phần tử trong array và list rồi đo perf là biết ngay thôi mà.
Hỏi về Array và List là cái dễ nhất rồi,
Hỏi sâu nữa thì người ta sẽ hỏi về bản chất của arr và list, độ phức tạp của các method add/get/delete trong 2 thằng
Sâu hơn nữa thì hỏi tí về cách phần cứng xử lý array và list thế nào? tại sao nên dùng array
Theo mình hiểu thì các ô nhớ chứa array phải liên tục trong bộ nhớ bác nhỉ ?

Còn list thì k cần, vì list chứa ref đến phần tử tiếp theo
 
Truy xuất theo index thì List cũng O(1) mà thím ? Hay list thím nói là Linked Lít ???

Ý tôi nói là linked list nói chung ấy. Còn bên dưới cái kiểu List<T> của thằng C# nó implement thế nào thì ko biết, nếu bên dưới nó implement là array thì là O(1). Tôi cũng ko phải C# expert nên ko cũng ko rõ language features của nó. :shame:

Nếu nói về language features thì cũng ko rõ thằng C# lúc tạo List<T> nó có clone cái array gốc ra ko hay chỉ wrap nó vào object với các method add/remove. Nếu nó ko clone array thì ko làm thay đổi time/space complexity.
 
Sửa lần cuối:
Ý tôi nói là linked list nói chung ấy. Còn bên dưới cái kiểu List<T> của thằng C# nó implement thế nào thì ko biết, nếu bên dưới nó implement là array thì là O(1). Tôi cũng ko phải C# expert nên ko cũng ko rõ language features của nó. :shame:

Nếu nói về language features thì cũng ko rõ thằng C# lúc tạo List<T> nó có clone cái array gốc ra ko hay chỉ wrap nó vào object với các method add/remove. Nếu nó ko clone array thì ko làm thay đổi time/space complexity.
Đậm: List<T> nó internal implementation là một cái array có size thật to hơn số element nhá. Khi add hàng loạt mà vượt qua size thật thì nó tạo hẳn cái array mới.

Không đậm: Lúc tạo thì nó clone cái array gốc.
 
Theo mình hiểu thì các ô nhớ chứa array phải liên tục trong bộ nhớ bác nhỉ ?

Còn list thì k cần, vì list chứa ref đến phần tử tiếp theo
Đúng rồi bạn,
Nhìn chung mà nói thì chỉ cần nắm được nguyên lý của cấu trúc dữ liệu là đánh giá cao rồi
Bạn đừng phụ thuộc quá vào ngôn ngữ
 
Chào các bác giờ em đi phỏng vấn algorithm mà em dùng C# code, thì có đươc convert array trong đề bài thành List trong c# cho dễ xử lý ko nhỉ ??

Lý do là trong C# không hỗ trợ mấy hàm add, remove thao tác với các phần tử trong mảng dễ như JS

Bác phải làm rõ vấn đề là có xác định được length của Array hay ko.

Nếu có -> xài Array.

Nếu ko xác định được length -> xài Array là sai, List nằm trong thư viện chuẩn của .NET
 

Thống kê chủ đề

Ngày tạo
Donald Trump USA_No1,
Người trả lời cuối
leptepkt,
Trả lời
47
Lượt xem
4.380
Quay lại
Lên đầu trang