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

Donald Trump USA_No1

Senior Member
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
 
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. Muốn làm gì làm. Nhưng làm xong ko đảm bảo Time Complexity thì failed.

Mà phỏng vấn thuật toán thì thường sẽ có một list các ngôn ngữ thông dụng để mình chọn. Thích javascript thì cứ chọn nó mà code.

via theNEXTvoz for iPhone
 
Được. Muốn làm gì làm. Nhưng làm xong ko đảm bảo Time Complexity thì failed.

Mà phỏng vấn thuật toán thì thường sẽ có một list các ngôn ngữ thông dụng để mình chọn. Thích javascript thì cứ chọn nó mà code.

via theNEXTvoz for iPhone
Mình thích C# cơ bạn, cơ mà mấy hàm xử lý array trong c# ví dụ thêm 1 phần tử vào mảng, xoá ở mảng bên C# ko có mấy hàm kiểu thế
 
Mình thích C# cơ bạn, cơ mà mấy hàm xử lý array trong c# ví dụ thêm 1 phần tử vào mảng, xoá ở mảng bên C# ko có mấy hàm kiểu thế

Thế thì sẽ làm tăng Space Complexity. Thường cái đề bài sẽ cho kiểu độc lập ngôn ngữ nên ko có chuyện viết bằng Javascript thì lại tối ưu hơn viết bằng C#.

Nếu nó cho phép dùng mấy hàm có sẵn của ngôn ngữ thì khi chọn C# để code, đề bài sẽ cho input là List hay ArrayList luôn, còn nếu nó để array bình thường thì nghĩa là giải thuật tối ưu để giải bài đó ko cần phải convert qua list, muốn convert qua để giải thì chấp nhận nguy cơ bị failed vì ko thoả time/space complexity.

via theNEXTvoz for iPhone
 
Thế thì sẽ làm tăng Space Complexity. Thường cái đề bài sẽ cho kiểu độc lập ngôn ngữ nên ko có chuyện viết bằng Javascript thì lại tối ưu hơn viết bằng C#.

Nếu nó cho phép dùng mấy hàm có sẵn của ngôn ngữ thì khi chọn C# để code, đề bài sẽ cho input là List hay ArrayList luôn, còn nếu nó để array bình thường thì nghĩa là giải thuật tối ưu để giải bài đó ko cần phải convert qua list, muốn convert qua để giải thì chấp nhận nguy cơ bị failed vì ko thoả time/space complexity.

via theNEXTvoz for iPhone
Thế bác cho em hỏi giả sử trong giải thuật đề bài cho input là array, vậy bác muốn thêm hay xoá 1 phần tử bác lại tốn công viết thêm 1 hàm làm việc này à ?
 
Thế bác cho em hỏi giả sử trong giải thuật đề bài cho input là array, vậy bác muốn thêm hay xoá 1 phần tử bác lại tốn công viết thêm 1 hàm làm việc này à ?

Đúng vậy. Vì bản chất nếu nó là array thuần (dãy các ô nhớ liên tiếp, ko phải linked list) thì cho dù dùng hàm built in của ngôn ngữ hay tự viết thì độ phức tạp thuật toán là như nhau.

Nếu phải convert qua List rồi dùng hàm add/remove sẵn thì lại ko tối ưu.

Như đã nói ở trên, đề bài phải độc lập với ngôn ngữ. Array trong javascript ko thật sự giống 100% như array trong C++, C#, nó có những hàm add, remove là do bản chất nó hơi giống ArrayList, Linked List hơn.

via theNEXTvoz for iPhone
 
Đúng vậy. Vì bản chất nếu nó là array thuần (dãy các ô nhớ liên tiếp, ko phải linked list) thì cho dù dùng hàm built in của ngôn ngữ hay tự viết thì độ phức tạp thuật toán là như nhau.

Nếu phải convert qua List rồi dùng hàm add/remove sẵn thì lại ko tối ưu.

Như đã nói ở trên, đề bài phải độc lập với ngôn ngữ. Array trong javascript ko thật sự giống 100% như array trong C++, C#, nó có những hàm add, remove là do bản chất nó hơi giống ArrayList, Linked List hơn.

via theNEXTvoz for iPhone
Thế thì nên luyện algo bằng JS là nhanh nhất cho nhàn đầu
 
Nói thế mà còn ko hiểu. Đã bảo là độc lập ngôn ngữ rồi thì javascript hay c# như nhau

via theNEXTvoz for iPhone
Nhưng vấn đề ý em quan tâm là như này, trong khoảng thời gian phỏng vấn giới hạn, đối với JS bác có thể gọi thẳng 1 hàm luôn để remove 1 phần tử đúng ko? Nhưng như bác nói em code C# em sẽ phải viết 1 hàm để delete phần tử đó thì em tưởng làm JS sẽ lợi hơn chứ nhỉ? ?? bác thông em với
 
Nhưng vấn đề ý em quan tâm là như này, trong khoảng thời gian phỏng vấn giới hạn, đối với JS bác có thể gọi thẳng 1 hàm luôn để remove 1 phần tử đúng ko? Nhưng như bác nói em code C# em sẽ phải viết 1 hàm để delete phần tử đó thì em tưởng làm JS sẽ lợi hơn chứ nhỉ? ?? bác thông em với

Haizz. Nếu giải thuật tối ưu cho bài đó cần cái hàm add/remove thì cái input của đề bài khi bạn chọn ngôn ngữ là C# thì người ta sẽ truyền cho bạn List hay ArrayList, ko có phải bắt bạn đi convert qua đâu.

Trường hợp bắt bạn phải convert thì tôi nói thẳng luôn là thằng ra đề củ chuối quá. Nó mắc lỗi phụ thuộc ngôn ngữ. Lúc này thì cứ convert thoải mái bất chấp miễn sao giải dc thôi.

via theNEXTvoz for iPhone
 
Nhưng vấn đề ý em quan tâm là như này, trong khoảng thời gian phỏng vấn giới hạn, đối với JS bác có thể gọi thẳng 1 hàm luôn để remove 1 phần tử đúng ko? Nhưng như bác nói em code C# em sẽ phải viết 1 hàm để delete phần tử đó thì em tưởng làm JS sẽ lợi hơn chứ nhỉ? ?? bác thông em với
nếu người ta thực sự đưa cho anh 1 cái array thì khả năng cao là anh sẽ ko cần làm thay đổi số phần tử của cái array đó đâu.
 
Đã là pv về giải thuật thì cứ trình bày giải thuật của mình đã. Đầu tiên ko quan tâm mấy cái operation kia đi, bản chất ở đây là anh cần 1 cái collection phục vụ cho việc giải quyết vấn đề.
Sau khi anh có ý tưởng, phát triển nó thành giả mã rồi, mới tính đến chuyện cài đặt các collection kia như thế nào.
Anh có thể dùng array hoặc built-in collection của ngôn ngữ nếu có. Chỉ cần thoả mãn các ràng buộc của đề bài về time-complexity và space-complexity.
P/s: nếu muốn dùng array thì khai báo 1 lần = tổng số phần tử có thể có, khỏi cần cấp phát, quản lý index cho đúng là đc.
 
nếu pv bài bản thì trước khi nó cho ngồi viết code (bằng giấy,viết lên bản) thì nó sẽ hỏi về ý tưởng trước, có ý tưởng rồi nó sẽ follow theo ý tưởng đó mà xem code, mà ý tưởng thì chả cần chi tiết ngôn ngữ gì cả, vd: cho bài toán tìm cách đổi tiền chẳng hạn, thì sẽ nói ý tưởng mình sẽ dùng đệ quy hay vòng for, rồi dùng bao nhiêu vòng for, điều kiện dừng thế nào, sẽ gồm những bước nào, mỗi bước thì sẽ làm gì ...
 
Pv giải thuật thì liên quan đếch gì tới ngôn ngữ, Array là Array mà List là List, Ông muốn dùng hàm delete, add trong array thì ông phải chỉ ra Time complexity. Kể cả ông dùng JS mà dùng hàm delete trên array thì người pv cũng sẽ hỏi ông cách delete 1 phần tử trong array thế nào thôi, bởi vì bản chất ko phải gọi delete phát là phần tử đó trong array đó bị xoá đi luôn
 
Pv giải thuật thì liên quan đếch gì tới ngôn ngữ, Array là Array mà List là List, Ông muốn dùng hàm delete, add trong array thì ông phải chỉ ra Time complexity. Kể cả ông dùng JS mà dùng hàm delete trên array thì người pv cũng sẽ hỏi ông cách delete 1 phần tử trong array thế nào thôi, bởi vì bản chất ko phải gọi delete phát là phần tử đó trong array đó bị xoá đi luôn
ý tôi hỏi lúc code có phải ông dùng JS sẽ nhanh hơn đúng ko
 
Haizz. Nếu giải thuật tối ưu cho bài đó cần cái hàm add/remove thì cái input của đề bài khi bạn chọn ngôn ngữ là C# thì người ta sẽ truyền cho bạn List hay ArrayList, ko có phải bắt bạn đi convert qua đâu.

Trường hợp bắt bạn phải convert thì tôi nói thẳng luôn là thằng ra đề củ chuối quá. Nó mắc lỗi phụ thuộc ngôn ngữ. Lúc này thì cứ convert thoải mái bất chấp miễn sao giải dc thôi.

via theNEXTvoz for iPhone
Bác thông cảm e hỏi hơi nhiều nhưng mà nếu mà đề phỏng vấn mà chuẩn, thì trong thop để giống với mảng bên JS thì ng pvan phải truyền vào List<T> đúng k bác
 
ý tôi hỏi lúc code có phải ông dùng JS sẽ nhanh hơn đúng ko
Pv algo đâu cần code nhanh hay ko, ông thích dùng pseudo code cũng đc, nó ko care ông dùng ngôn ngữ gì, ông thích dùng C# , JS hay C++ gì cũng đc, ông thích .delete/add/remove/append thế nào cũng đc, sau đó thì người pv kiểu gì cũng hỏi time complexity, ông hiểu bản chất của cái hành động ông vừa làm thì pass
 
Pv algo đâu cần code nhanh hay ko, ông thích dùng pseudo code cũng đc, nó ko care ông dùng ngôn ngữ gì, ông thích dùng C# , JS hay C++ gì cũng đc, ông thích .delete/add/remove/append thế nào cũng đc, sau đó thì người pv kiểu gì cũng hỏi time complexity, ông hiểu bản chất của cái hành động ông vừa làm thì pass
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 ?
 

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