我是不是需要知道如何手动创建数据结构以获得入门级工作,或者我应该只知道如何使用收集框架中的数据结构? [关闭]
Posted
技术标签:
【中文标题】我是不是需要知道如何手动创建数据结构以获得入门级工作,或者我应该只知道如何使用收集框架中的数据结构? [关闭]【英文标题】:Do I need to know how to manually create data structures for getting entry level job or should i just know how to use those from collection framework? [closed]我是否需要知道如何手动创建数据结构以获得入门级工作,或者我应该只知道如何使用收集框架中的数据结构? [关闭] 【发布时间】:2022-01-21 07:09:37 【问题描述】:据我所知,目前有两种使用数据结构的方法 - 使用集合框架中的一种(例如:LinkedList<String> list = new LinkedList<>();
)或手动创建这些结构(例如:public class Node<T>T data; Node Next; public Node(T data) this.data = data;
然后:public class LinkedList <T>Node head;
-and对应的方法,如add
,remove
...),然后为它们添加方法(如:add
,push
,pop
,等等...)
【问题讨论】:
一个工作永远不会要求你写一个链表类。您将需要了解List
(以及Set
和Map
)的java.util
实现的性能特征,以及如何以类型安全和线程安全的方式使用它们,以及哪些实现如果你想要特定的顺序使用。
(以及为什么 hashCode 和 equals 很重要)
【参考方案1】:
这个问题有很多需要解开的地方。
一方面,您不太可能需要在实际工作中重新实现LinkedList
。当然,不是在 Java 中,并且具有与 LinkedList
完全相同的 API 和功能。 (那会浪费时间!)
但你可能需要实现:
自定义 Java 链表,其 API 与java.util.List
API 不兼容
一个“开放”链表作为其他东西的一部分,其中节点实际上是列表元素1
另一种编程语言的链表2(例如 C 或汇编语言)
此外,你的课程教你链表还有其他原因:
了解链表的工作原理有助于您了解它们的性能特征,以及它们的实现权衡......独立于任何特定的编程语言。 这是一个教你一些其他重要话题的“工具”;例如推理代码、复杂性理论、抽象等。您的老师为您设置一个实施链表课程的练习,这额外的好处是让您更精通一般的编程。当你来找你的第一份工作时,这肯定会对你有好处。
是的,Marko,作为工作申请/面试过程的一部分,您可能会接受实际编程和解决问题的能力的测试。尤其是入门级职位。
他们可能不会要求您在工作面试中编写链接列表3。所以记忆链表实现是浪费时间,IMO。相反,练习解决你没有见过/没有教过的问题。这是提高技能的更好方法。
最后,在人们申请第一份工作的竞争激烈的市场中,在求职面试中会留下深刻印象的事情(例如对数据结构的良好理解)将使你比你所在领域的“纯 C”新毕业生程序员更有优势队列。
1 - 在性能关键的应用程序中,您可能会出于与性能相关的原因这样做。 2 - 不要以为您将在职业生涯中使用的唯一编程语言将是 Java。 3 - 如果他们这样做了,这表明你的面试官没有灵感或懒惰……这不是一个好兆头。
【讨论】:
以上是关于我是不是需要知道如何手动创建数据结构以获得入门级工作,或者我应该只知道如何使用收集框架中的数据结构? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章