Java面试中经常问到的算法题目如下:
- 二叉树宽度遍历
- 红黑树
- 数据结构的话,链表,树,图的基本知识得懂
- 了解树的先序遍历,中序遍历,后序遍历。图的广度优先搜索算法,深度优先搜索算法。
- 手撕算法:反转单链表
- 手撕算法:实现类似微博子结构的数据结构,输入一系列父子关系,输出一个类似微博评论的父子结构图
- 手写java多线程
- 手写java的soeket编程,服务端和客户端
- 手撕算法: 爬楼梯,写出状态转移方程
- 智力题:时针分针什么时候重合
以上是总结的Java面试中有关算法的高频问题。
除此之外,Java面试中还会问到Spring+多线程JVM+集合Spring+数据库计算机网路+中间件等相关问题,【2019年最新BAT高级Java必考面试题+答案】送给大家,本文下面点赞,关注+私信回复【bat】,即可领取。
点赞+关注+私信[bat],即可领取。
我曾经面试过很多一线互联网大公司,确实这一类的公司面试的时候比较注重算法(不过自己的经验和朋友的说法来看,工作中从来都用不到)!
问的算法方面的知识也不会很深,比如之前在一家公司,要求我写一个二分法查找的伪代码,就写个思路即可,还有的要求说出二叉搜索树,红黑树,还有诸如冒泡排序,快速排序,插入排序等方式的性能以及如何选择最优的方式!
其实如果不是跟大数据,搜索,统计这些息息相关的工作岗位,问的算法都比较简单,就看你有没有了解过基本算法和解决思路!
其实,在面试过程中数据结构问的更多一些,比如说hashMap的内部结构,如何扩容,扩容时候的线程安全问题,JAVA8中为什么加入红黑树?arraylist,linkedlist区别与应用场景?等等这种JAVA中常用的数据结构的深入理解!
所以,如果您要面试的话,我的建议是,基本的算法,比如二分查找,递归,基本的排序算法等掌握其思路,写出伪代码,基本的数据结构掌握其底层源码和优缺点!基本算法和数据结构这一块就OK了!
我的建议是:先整理清楚整个算法以及数据结构的框架,下图是我整理的:
把基本概念了解清楚,查漏补缺。
适当的在leetcode上刷刷题目。
最后可以参考我之前的文章,整理第一手互联网公司的面试题。
因为我是在动力节点培训学习的Java,他本身是只教Java的培训学校,所以各方面都非常专业,包括老师也都特别认真负责,在我准备算法这方面的时候,老师告诉我几个小技巧:
- 算法面试,只是面试中的一个环节。
- 远远不需要啃完一本《算法导论》
- 强调理论证明
- 第一遍读不需要弄懂证明
- 前几遍阅读应该记住结论就行了,不需要弄懂证明。把更多的精力放在算法思想上。
- 针对算法面试,算法导论里面的理论推导和证明不是很重要的方面。