(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

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

如果你需要更多的练习,这里还有另外 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
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|