在本文中,我将分享一些常见的编程面试问题,这些问题来自于不同经验水平的程序员,囊括从刚大学毕业的人到具有一到两年经验的程序员。
编码面试主要包括数据结构和基于算法的问题,以及一些诸如如何在不使用临时变量的情况下交换两个整数这样的逻辑问题?
顺便说一句,如果你对基本的数据结构和算法没有足够了解,或者你多年未接触相关知识,那么尝试这些问题毫无意义。
在这种情况下,你应该学习像 Robert Horvick 的算法及数据结构第1部分和第2部分这样的优秀课程以更新你的数据结构和算法技能。
解决数组问题的关键是,你要对数组这种数据结构有一个深刻的认识,同时还要了解基本的程序流程如循环、递归以及基本的操作符。
下面是一些经常问到和数组相关的面试题,你可以拿来练习:
在一个给定的从1到100的整型数组中,如何快速找到缺失的数字?(解决方案)
如何找到一个给定的整型数组中的重复数字?(解决方案)
在一个未排序的整型数组中,如何找到最大和最小的数字?(解决方案)
在一个整型数组中,如何找到一个所有成对的数字,满足它们的和等于一个给定的数字?(解决方案)
如果一个数组包含多个重复元素,如何找到这些重复的数字?(解决方案)
用 Java 实现从一个给定数组中删除重复元素?(解决方案)
如何利用快速排序对一个整型数组进行排序?(解决方案)
如何从一个数组中删除重复元素?(解决方案)
用 Java 实现数组反转?(解决方案)
如何不借助库实现从数组中删除重复元素?(解决方案)
这些问题不仅可以帮助你提高解决问题的技巧,还可以帮助提升对数组结构的认识。
如果你需要更多关于数组的进阶的问题,可以参考《代码面试训练营:算法和数据结构》,这是一个训练营形式的算法课程,特别针对像 Google、微软、Apple 和 Facebook 这样的技术巨人面试准备而设计。
如果你感觉 10 个问题还不够,还需要更多的联系,那就看看这个 30 个数组问题的列表。
如果你从链表中去掉一个节点, 剩下的数据结构仍然是链表,因此, 许多链表问题有比遍历更简单的递归解决方案.
下面是一些最常见和流行的链表面试问题和解决方案:
在一次遍历中,怎样发现单个链表的中间元素? (答案)
怎样验证给定的链表是环形的? 怎样发现这个环的起始节点? (答案)
怎样翻转链表? (答案)
不使用递归,怎样反转单个链表? (答案)
在未排序链表中,怎样移除重复的节点? (答案)
怎样找出单个链表的长度? (答案)
从单个链表的结尾处,怎样找出链表的第三个节点? (答案)
怎样使用栈计算两个链表的和? (答案)
这些问题可以帮助你提升解决问题的技巧,同时完善链表数据结构有关的知识.
如果你解决这些链表编码题仍存在问题,我建议你通过 Data Structures and Algorithms: Deep Dive** Using Java** 课程来提升你的数据结构和算法技能.
你也可以从30 linked list interview questions 清单中获取更多练习题.
评论删除后,数据将无法恢复
评论(6)
引用来自“断风格男丶”的评论
链接都要翻墙么?