二、Android面试知识框架
三、Java 基础叩关
3.1 数据结构与算法
3.1.1 常用的数据结构有哪些?
3.1.2 数组
(1).如何在一个1到100的整数数组中找到丢失的数字?
(2).如何在给定的整数数组中找到重复的数字? 小米
(3).如何在未排序整数数组中找到最大值和最小值? 字节跳动
(4).在Java中如何从给定数组中删除多重复制?
(5).大数相加(今日头条)
3.1.3 链表
(1).那查询第一个跟倒数第二个呢?(这就不一样了,第一个直接给了头结点,倒数第二个需要从倒数第一个开始查询,走两步) 腾讯
(2).arrayList底层原理 滴滴 字节跳动
(3).如何在一次遍历中找到单个链表的中值? 中国平安
(4).如何证明给定的链表是否包含循环?如何找到循环的头节点? 优酷
(5).两个有交叉的单链表,求交叉点 华为
(6).如何得到单链表的长度? 360
(7).如何在不使用递归的情况下逆转单链表? 小米/美团
(8).怎么判断链表有环? 滴滴
3.1.4 队列&堆栈
(1).如何使用栈实现队列的功能?(广州荔枝FM)
(2).两个栈实现一个队列 蘑菇街
(3).两个队列实现一个栈 腾讯
(4).对比一下队列和栈,以及它们底部实现 腾讯
3.1.5 二叉树
(1).如何在给定的二叉树中执行先序遍历?百度
(2).如何实现后序遍历算法? 百度
(3).如何在给定数组中执行二分法搜索? 苏宁
(4).已知前序遍历为{1,2,4,7,3,5,6,8},中序遍历为{4,7,2,1,5,3,8,6},它的二叉树是怎么样的? 58
(5).输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。 爱奇艺
(6).请实现两个函数,分别用来序列化二叉树和反序列化二叉树。 YY
(7).平衡二叉树和红黑树的区别?字节跳动
(8).什么是平衡二叉树,它有什么特征 美团
(9).B 树,B+树
3.1.6 HashMap
(1).HashMap的底层原理是什么?线程安全么? 百度 美团
(2).HashMap中put是如何实现的? 滴滴
(3).谈一下hashMap中什么时候需要进行扩容,扩容resize()又是如何实现的?
(4).什么是哈希碰撞?怎么解决? 滴滴 美团
(5).HashMap和HashTable的区别 小米
(6).HashMap中什么时候需要进行扩容,扩容resize()是如何实现的? 滴滴
(7).hashmap concurrenthashmap原理 美团
(8).arraylist和hashmap的区别,为什么取数快?字节跳动
3.1.7图
(1).旋转输出矩阵
( 2).给定一个矩阵 int matrixA[m][n],每行每列都是增序的,实现一个算法去寻找矩阵中的某个元素 element. 搜狗
3.1.8排序算法有哪些?
(1).top-k排序(堆排序,位图法) 美团
(2).冒泡排序的手写 华捷艾米
(3).堆排序算法的手写 华捷艾米
(4).椭圆形场地有两个赛道,可以同时提供两匹马比赛,两匹马比赛后,可以获知两匹马中跑的快的那匹马,但是没有计时工具。问题,如何最优的算法(比赛次数最少),获知10匹马中速度最快的三匹马 阿里
(5).输入一个整型无序数组,对堆排序的方法使得数组有序 阿里
(6).如何使用快速排序算法对整数数组进行排序? CVTE
3.1.9 查找算法
(1).有序数组的二分查找算法 百度
3.1.10 串
(1).给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。 字节跳动
(2).给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
3.1.11 请写出以下算法的时间复杂度
冒泡排序法 插入排序法 堆排序法 二叉树排序法
3.1.12 其他算法
(1).常用的对称加密算法,有什么同? 字节跳动
(2).如何在无序(有负数)的数组中查找是否存在和为target的两个数组合,twoSum(); 字节
3.2 Java基础
(1).什么情况下会发生栈内存溢出?
(2).如果让你写一段栈溢出的代码你会什么写,一个栈大概有多大,为什么?每个线程都有这样大小的一个栈吗? (美团)
(3).JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代