Java后端开发面经(腾讯、阿里)

       在前面几篇博文中我也有提到个别在面试中遇到的问题,查看面经也是一种很不错的学习方式,因此今天就跟大家全面地分享一下在腾讯和阿里面试中遇到了哪些问题,然面试问题涵盖的面太大,很难依次进行分析解决,不过我会对这些问题囊括的知识点加以说明,所以希望大家都可以通过自己查询资料等方式解决不懂的问题哦~

       阿里巴巴面试

       1.给定存有n个数的数组,找出数组中最小的k个数。(剑指offer_面试题40 可通过快排在O(n)时间复杂度内解决问题)

       2.项目中软件设计思想的体现,或者给定一个项目从头至尾如何进行设计,还有怎样进行风险处理及任务分配。(博主软件工程专业,该问题涉及软件开发生命周期等知识)

       3.什么是死锁,形成死锁须具备哪些条件,怎么预防死锁,如果死锁已经产生怎么解决,讲一下银行家算法。(操作系统死锁相关问题,在上一篇博文中我有详细介绍)

       4.数据库索引有哪些优点和缺点,mysql数据库索引是通过什么实现的,相比B+树索引数据结构,有没有更快的索引数据结构,为什么不用更快的数据结构,在哪些情况下不适合创建索引,红黑树的时间复杂度是多少。(该问题基本涵盖了数据库索引的所有重点,关于数据库索引我也在前面博文中有详细介绍,大家有不懂的可以去翻阅查看哈)

       5.为什么Java语言具有平台无关性,jvm内存回收方式有哪些,讲一下类加载机制,有没有在项目中考虑及体现内存回收。(涉及Jvm相关问题,垃圾回收与类加载在前面的博文中也有详细介绍,平台无关性也涉及到了字节码文件内容)

       6.给定一个不知道长度的链表,遍历k个节点,使得前k个节点值随机存在且概率相等。(编程珠玑中的问题,采用蓄水池取样方法即可)

       腾讯面试

       1.数据库索引是通过什么实现的。(该问题同上)

       2.红黑树与AVL二叉平衡树的区别。(注:AVL任意结点左右子树高度差不能超过1,红黑树高度差不能超过两倍)

       3.使用Socket实现一个WebServer。(涉及网络编程相关问题,后续我会详细介绍)

       4.Jvm是怎样进行内存分配的,讲一下垃圾回收机制。(该问题同上)

       5.如果发送一个url请求,首先url转换为文件名,此时文件名需要通过cache缓存判断处理后方可发送到服务器,那么cache缓存的数据结构应该是什么,如果使用这种数据结构时间复杂度又是多少呢,cache满的情况下应该怎么办。(涉及缓存以及数据结构相关问题)

       6.讲一下MyBatis的底层实现。(涉及MyBatis的底层实现,在前面的博文中我有详细介绍,大家有兴趣的可以去查看了解哈)

       大概就是这些问题,其实问题算是比较常规,但可能基础知识掌握的确实不够踏实。阿里的死锁问题回答的不是很好,还有腾讯的MyBatis底层实现都应该自己的加分问题,但回答的也是不够理想,归根究底还是不够熟练,也体现了现在学到的东西确实还远远不够,所以继续努力呃~

你可能感兴趣的:(Java面试经历)