加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

手写二叉树?程序员面试最常见问题TOP 48

发布时间:2018-09-30 04:49:57 所属栏目:移动互联 来源:机器之心编译
导读:【新品产上线啦】51CTO播客,随时随地,碎片化学习 同学,你会手写二叉树吗?近来正值秋招季节,很多编程面试都要求手写数据结构手推机器学习算法。各位同学为了面试也会刷各种编程题,其中数据结构与排序搜索算法又是最为基础的内容。在本文中,我们为各位

(10) 如何检查给定的链表是否包含循环?如何找到循环的起始节点?

  • 解决方案:http://javarevisited.blogspot.sg/2013/05/find-if-linked-list-contains-loops-cycle-cyclic-circular-check.html

(11) 如何反转链表?

  • 解决方案:http://www.java67.com/2016/07/how-to-reverse-singly-linked-list-in-java-example.html

(12) 在没有递归的情况下如何反转单链表?

  • 解决方案:http://javarevisited.blogspot.sg/2017/03/how-to-reverse-linked-list-in-java-using-iteration-and-recursion.html

(13) 如何删除乱序链表中的重复节点?

  • 解决方案:https://www.geeksforgeeks.org/remove-duplicates-from-an-unsorted-linked-list/

(14) 如何测量单链表的长度?

  • 解决方案:http://javarevisited.blogspot.sg/2016/05/how-do-you-find-length-of-singly-linked.html

(15) 如何从单链表的末端找出第三个节点?

  • 解决方案:http://javarevisited.blogspot.sg/2016/07/how-to-find-3rd-element-from-end-in-linked-list-java.html

(16) 如何使用堆栈算出两个链表的总和?

  • 解决方案:https://www.geeksforgeeks.org/sum-of-two-linked-lists/

这些问题有助于你发展解决问题的技能,并提升你对链表数据结构的了解。目前有非常多的资源可以帮助我们理解链表,例如在 GitHub 上一个交互式的编码实践中,它使用 Jupyter Notebook 提供了数据结构与算法的各种练习,其中就包括了很多链表问题及实践。

项目地址:https://github.com/donnemartin/interactive-coding-challenges

手写二叉树?程序员面试最常见问题TOP 48

3. 字符串编码面试问题

除了数组和链表数据结构,字符串也是编程工作面试中的另一热点话题。我参加过的编码面试基本都问过关于字符串的问题。

如果你了解数组,那么你就能轻易地解决基于字符串的问题,因为字符串就是字符数组。因此,你通过解决数组编程问题学到的所有技巧,也能用来解决字符串编程问题。

以下是编程工作面试中常问的字符串编程问题列表:

(17) 如何打印字符串中重复的字符?

  • 解决方案:http://java67.blogspot.sg/2014/03/how-to-find-duplicate-characters-in-String-Java-program.html

(18) 如何检查两个字符串是否互为逆序?

  • 解决方案:http://javarevisited.blogspot.sg/2013/03/Anagram-how-to-check-if-two-string-are-anagrams-example-tutorial.html

(19) 如何打印字符串中首个非重复字符?

  • 解决方案:http://javarevisited.blogspot.sg/2014/03/3-ways-to-find-first-non-repeated-character-String-programming-problem.html

(20) 如何使用递归反转给定字符串?

  • 解决方案:http://javarevisited.blogspot.sg/2012/01/how-to-reverse-string-in-java-using.html

(21) 如何检查一个字符串是否仅包含数字?

  • 解决方案:http://javarevisited.blogspot.sg/2012/10/regular-expression-example-in-java-to-check-String-number.html

(22) 如何搜索字符串中的重复字符?

  • 解决方案:http://java67.blogspot.sg/2014/03/how-to-find-duplicate-characters-in-String-Java-program.html

(23) 给定一个字符串,如何统计元音数和辅音数?

  • 解决方案:http://java67.blogspot.sg/2013/11/how-to-count-vowels-and-consonants-in-Java-String-word.html

(24) 给定一个字符,如同计算它在字符串中出现的次数?

  • 解决方案:http://javarevisited.blogspot.sg/2012/12/how-to-count-occurrence-of-character-in-String.html

(25) 如何搜索一个字符串的所有排列情况?

  • 解决方案:http://javarevisited.blogspot.com/2015/08/how-to-find-all-permutations-of-string-java-example.html

(26) 在不使用任何库的情况下,如何反转给定句子中的单词?

  • 解决方案:http://java67.blogspot.com/2015/06/how-to-reverse-words-in-string-java.html

(27) 如何检查两个字符串是不是互为旋转(rotation)?

  • 解决方案:http://www.java67.com/2017/07/string-rotation-in-java-write-program.html

(28) 给定一个字符串,如何检查它是不是回文结构?

  • 解决方案:http://java67.blogspot.com/2015/06/how-to-check-is-string-is-palindrome-in.html

这些问题可以提升你对字符串数据结构的了解。如果你能独立解决所有这些字符串问题,说明你的状态很好。

如果想深入了解一些更复杂的问题,我推荐你去看 Steven Skiena 的《The Algorithm Design Manual》,这本书里有最难的算法问题。

网上也有该书的 PDF 版,下载地址:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.471.4772&rep=rep1&type=pdf

手写二叉树?程序员面试最常见问题TOP 48

如果你需要更多的练习,这里还有另外 20 个关于字符串编程的问题:

http://javarevisited.blogspot.sg/2015/01/top-20-string-coding-interview-question-programming-interview.html

4. 二叉树编程面试问题

现在我们只了解了线性数据结构方面的问题,但是真实世界中的所有信息不可能全是线性的,这就需要树数据结构了。

树数据结构允许以层级形式存储数据。根据存储数据的方式,有多种树类型,如二叉树。

和它的近亲二叉搜索树一样,它也是最流行的树数据结构之一。因此,你会看到很多相关的有趣问题。例如,如何遍历树、计算节点数量、找出深度,以及检查是否平衡。

解决二叉树问题的关键在于深厚的理论知识,如二叉树的大小或深度、什么是叶节点、什么是节点,以及了解流行的遍历算法。

以下是软件工程师或开发工作面试中常见的二叉树相关编程问题:

(29) 如何实现二叉搜索树?

  • 解决方案:http://javarevisited.blogspot.sg/2015/10/how-to-implement-binary-search-tree-in-java-example.html#axzz4wnEtnNB3

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读