最后
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友
互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
- 合并:将各个子问题的解合并为原问题的解
===========================================================================
汉诺塔问题源于印度一个古老的益智玩具,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64篇黄金圆盘,大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上,并且规定,再小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘
在三个盘的情况下,我们会想办法将最上面的两个盘子移动到B塔上,现将最大的盘子移动到C塔,最后将最上面的两个盘子移动到C塔,完成移动
移动64个盘子我们所遵循的移动思想和3个盘子基本一致
-
如果只有一个盘,A->C
-
如果我们有n>=2的情况,我们总是可以看做是两个盘1.最下面的盘2.上面的盘
-
先把最上面的盘A->B
-
把最下面的盘A->C
-
把B塔的盘移动从B->C
注意,解此类问题时,我们只需按照分治算法的思路,按照将问题分割到最小来解决,在汉诺塔中,无论盘子再多,在我们眼中,只有两个盘子在移动,那就是上面的盘子和下面的盘子,一旦我们将最简单地问题解决,递归会帮助我们解决一切
package org.wql.Ten.Hannuota;
/**
-
Description
-
User:
-
Date:
-
Time:
*/
public class HannuotaDemo {
public static void main(String[] args) {
System.out.println(“移动三个盘子”);
hanoiTower(3,‘A’,‘B’,‘C’);
}
//汉诺塔的移动的方法
public static void hanoiTower(int num,char a,char b,char c){
if(num==1){
//先把最上面的盘A->B
System.out.println(“第1个盘从”+a+“->”+c);
}else {
//我们总是可以看做只有两个盘,最下面的一个盘和上面的所有盘
//上面的盘子统一移动到B塔上
hanoiTower(num-1,a,c,b);
System.out.println(“第”+num+“个盘从”+a+“->”+c);
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
ms/4f45ff00ff254613a03fab5e56a57acb)收录**