Queue

来源:6-10 二分搜索树的层序遍历

哈hhh哈

2018-11-01

额 bobo老师,有点小问题,就是6-10里提的 Queue queue = new LinkedList<>() 这里,对您的解答没太理解,我一直理解的多态是。。比如 public class teacher implements singer, 这里singer是一个接口, 那么调用时可以:singer a = new teacher(); 我觉得实例化的对象是一个teacher对象,实现了singer的接口,要override接口singer的方法
类比queue和LinkedList的话,是不是java的LinkedList包设计是:public class LinkedList 这样,Queue是一个接口,那么最后实例化的对象不是应该是一个LInkedList吗,为什么您说最后实例化的是一个queue,而且LinkedList的方法无法调用呢?
可能是多态的基础没有学好 = = ,请老师解答一下。。

另外,老师,我现在研一,实验室项目是大数据、深度学习方向的,感觉要学的东西好多0…0,虽然已经听了您Python机器学习算法的课,但还是想重新好好看下西瓜书;然后现在深度学习的东西也要了解,具体到NLP、CV、推荐等等都想了解一下。。咨询了研三找算法岗的学长,建议我打好基础,数据结构、leetcode都要好好做好。。(幸亏现在已经开始听了您的数据结构课 = =|| )还想再抽一些时间学习语言和工具像看看您推荐的core java,spark工具之类的。
感觉特别乱,我也知道应该有些计划、条理,但是有时候规划的很好但是想一道leetcode medium的题就得一阵,做完大半天就过去了,也抽不出时间去读其他材料和论文了,额。。bobo老师,作为掌握那么多技能的全栈工程师,请问您有什么建议和经验吗@_@ 跪谢

写回答

1回答

liuyubobobo

2018-11-02

抱歉,我之前回答说这个是多态,稍微有些随意了。严格来说这不是多态,多态还是定义在父类和子类中的一种关系。


在这里的相关语法规定是:Queue是一个接口,是一个抽象数据类型,不能直接实例化。也就是不能写:

Queue<Integer> queue = new Queue<>();


要想创建一个接口的具体实例,我们只能实例化一个实现了该接口的类。在这里,就是LinkedList。但是,将这个实例化的对象赋值给Queue类型以后,这个对象的方法调用就被Queue的接口定义限制住了。Queue接口定义之外的LinkedList的方法不能再调用了:)


可以在代码中实际尝试一下,这样写以后,queue是否还能调用LinkedList中的其他非Queue定义的方法?比如addFirst:)


==========


关于你说的后一个问题:


1)时间永远是不够用的。人永远是要取舍的。接受这个事实:)在这个基础上,结合自身情况,做取舍,把时间用在刀刃上,或者,至少是,自己感兴趣的事情上:)


2)如果你系统的看过我的算法相关课程《玩转数据结构》,《算法与数据结构》和《玩转算法面试》,并且理解了其中大部分逻辑,可以做到大部分代码在自己想明白扩记得基础上编写出来的话。说实话,我有信心你的算法基础部分已经很好了,秒杀很多人,即使是985,211的计算机专业的研究生!保持练习没有问题,但可能并不需要每天花太多时间了。一天一道Leetcode问题,甚至对于你觉得稍有难度的问题,几天一道,完全没有问题。你毕竟刚刚研一!还有两年呢!


3)既然实验室的项目在大数据,深度学习方向,那么这才是重点。事实上这个方向非常好,我觉得你走出校门近乎一定是拿算法岗offer的大佬:)具体是不是NLP,CV,推荐,等等,都要了解一下?接触可以,但是深入,还是建议有取舍。深入下去,他们之间的差异还是蛮大的。结合自己实验室的项目是个好方法。


4)如果你是研究生,理论基础远远比学习具体的工具重要。把具体的工具的优先级放到最低,甚至不学没关系!(当然实验室的项目要用可以顺便学习。)基础牢靠的话,学习一个具体工具太容易了。对于在校应届研究生,去招聘,会什么具体工具一点儿都不重要!如果你理论体系完整,能发高质量论文,甚至kaggle排名数的上号,却因为没接触过spark不要你... 这个公司肯定不是大公司,不去也罢!


加油!

0
1
哈hhh哈
太感谢老师了???
2018-11-02
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程