网站多语言模块,湖北seo公司,wordpress分类搜索,做招聘网站还有法盈利吗1. 如何只扫描一遍就找到位于一个链表正中间的元素#xff1f; 这是最受欢迎的算法题之一#xff0c;经常在电话面试中被问到。很多程序员会想#xff0c;要知道链表的长度#xff0c;就要先扫描一遍链表#xff0c;然后在第二遍中取其正中的元素。所以被要求只扫描一遍就… 1. 如何只扫描一遍就找到位于一个链表正中间的元素 这是最受欢迎的算法题之一经常在电话面试中被问到。很多程序员会想要知道链表的长度就要先扫描一遍链表然后在第二遍中取其正中的元素。所以被要求只扫描一遍就解决问题的时候他们就会很困惑。要解决这个问题你要维护两个指针。一个每次往下走一个结点而另一个每次走两个结点。那么当走的快的指针到达链表末尾时另一个指针就正好指在链表的正中间。 2. 如何确定一个链表中是否存在环 这跟第一题有点类似。同样地维护两个指针分别以每步一个结点和每步两个结点的速度走那么如果当某一步结束以后两个指针指向同一个结点就说明我们找到了一个环。 3. 如何只扫描一遍就找到一个链表倒数第三个元素 这也是一个很经典的链表题也可以用两个指针的方法来解决。我们让第一个指针先走当它走出三步以后再让第二个指针开始走。那么当第一个指针到达链表的末尾时第二个指针就正好指向链表中的倒数第三个元素。 4. 如何找到一个含有 1~100 的数组中唯一出现两次的元素 这是一个挺简单的算法题。你可以把数组里面所有元素加起来再减去 1~100 的和就能得到那个重复的元素。当然你也可以暴力地去比对每一对元素不过这样的复杂度是 O(N^2)。 5. 如何在 Java 中反转一个字符串 这是我最喜欢的问题之一。因为 String 是编程中最重要的类型之一所以在技术面试中你会遇到许多跟字符串有关的问题。Java 和其他编程语言都有许多不同的方式可以反转一个字符串所以面试官往往会禁止你使用某些特性比如 reverse() 和 StringBuffer。之后他还可能会问如何用递归来反转字符串。 6. 如何用冒泡排序对数组进行排序 在技术面试中我总是会问一些关于搜索和排序的问题。冒泡排序是最简单的排序算法之一但如果你让一个候选人现场写冒泡排序这能够很好地衡量他的编程技能。 7. 栈和队列这两种数据结构之间的区别是什么 这是一个经典的数据结构问题应该没有人不知道的吧不管怎么说最主要的区别在于栈是后进先出(LIFO)而队列是先进先出(FIFO)的。 8. 如何找到一个数组中所有重复出现的元素 这个问题有时会作为第 4 题的后续出现。解决这个问题的一种途径是使用哈希表。遍历整个数组并将元素和出现次数存到哈希表中。最后你就可以统计那些出现超过一次的元素作为答案。在 Java 中当一个元素已经在 HashMap 中时调用 get(index) 就可以得到对应的值否则会返回 Null。这个性质可以用来插入和更新 HashMap 中的值。 9. 单向链表和双向链表之间有什么差别 这又是一个经常在电话面试中被问到的数据结构题。单向链表和双向链表之间主要的差别在于它们的可遍历性不同。在单向链表中每个结点只有指向下一个结点的指针而没有指向上一个结点的指针所以你就不能倒回去遍历。而双向链表的结点则维护了两个指针往两个方向都可以遍历。 10. 如何打印斐波那契数列 这是一个在面试中经常出现的编程问题。斐波那契数列是这样的一种数列它的每一项都等于前两项之和例如1123581321。面试官往往会关心这两件事情一个能够返回斐波那契数列第 n 项的函数以及如何在 Java 中用递归解决这个问题。虽然这个问题很简单但递归的部分可能会困惑一些初学者。 11. 如何判断一个整数是不是回文数 跟前一题一样这也不是一个算法题但在面试中的出现率也很高。当一个数反过来写还是等于本身时我们称之为回文数。面试官往往会要求你不使用 Java API 和第三方库来解这个问题。当然问题本身不难。你只要会用 / 和 % 就能解决它。/ 能去掉最后一位而 % 能得到最后一位。比如 1234 / 10 会得到 123而 1234 % 10 则能得到 4。 12. 什么是二叉查找树 这是一个关于树的数据结构问题。二叉查找树满足一些特殊的性质比如说每个结点的左子树中的值都要比自身小而右子树中的值都要比自身大等等。除了定义以外面试官还可能让你在 Java 中实现一棵二叉树并询问关于树的遍历的问题。比如中序遍历、先序遍历和后序遍历之间的区别。 13. 如何分别用递归和非递归方式倒置一个链表 这是一个非常好的数据结构题所以我希望你自己去思考。当然你也能轻易地在网上找到许多解法。 14. 如何用 Java 实现一个栈 你可以用数组或者链表来实现栈。这个问题期望你实现栈所提供的标准接口也就是 push()和 pop()。这两个操作都应该发生在栈的顶部。当然如果你能实现 contains() 和 isEmpty() 这样的功能就更好了。顺便一提你可以利用 JDK 提供的 java.util.Stack 来学习怎么实现一个栈。