京东二面面经详谈

本文记录了一次京东技术面试的经历,面试涵盖了自我介绍、学习经历、计算机基础知识如排序算法、数据结构、网络协议等方面。面试过程中对排序算法的时间复杂度、数据结构的应用以及TCP三次握手等进行了深入讨论。面试官对技术有深刻理解,通过交流,作者认识到自身知识的不足,收获颇丰。
摘要由CSDN通过智能技术生成

收到了京东的二面电话,我觉得这次面试有一定的广度和深度,也和面试官发生了一些争论,是一次挺有意思的面试,遂详细记录之。


面经:

首先一上来面试官让我做了一下自我介绍,经过了总共大约四五次电话面试,遇到这样的问题已经是很多次了,但是我还是简单表述了一下自己的技能栈就结束了,这个其实还可以再多说很多。

接着面试官问了一下我的学习过程(刚开始我没搞懂面试官说的学习过程是什么意思,后来了解到是自己的教育经历)。然后我表达了一下自己大连理工大学软件工程大三学生的状态。

紧接着面试官问了下我的必修课有哪些。我说了下计算机网络、操作系统、数据结构与算法、编译原理(实际上当时我不太敢说编译原理..感觉自己编译原理确实已经忘很多了)。面试官对我的计算机基础很感兴趣,说我的笔试成绩很高(京东之前有一个笔试),但是事实上京东那三道算法题我只AC了两道..顶天也只能是80了,可能选择题做的比较好?于是面试官便开始考察起了我的计算机基础。

面试官:常见的排序算法了解吗?

我:嗯,有一些了解。常见排序算法可以分为三种时间复杂度,O(n+k),O(nlog2n),O(n^2)。O(n^2)的排序比如冒泡排序、O(nlog2n)的排序比如快速排序、归并排序、二分插入排序,对于基于比较的排序算法这个时间复杂度已经不能再低了,然后O(n+k)时间复杂度的排序比如桶排序、基数排序、计数排序(可能是这个地方复杂度说多了..面试官后面很大篇幅在问我时间复杂度)。

面试官:恩,我懂你的意思了,你对排序比较了解。你能说一下常见数据结构吗?

我:我能以数据结构在Java中的体现了举例子吗?

面试官:我觉得emmm数据结构应该和语言无关吧...

我:那好吧,我以为您更想听的是Java中的数据结构。常见的数据结构简单的有链表、队列、栈、二叉树,稍微复杂一点的比如B+、B-、B*、红黑树、图等。

面试官:那现在有10w个数字,你如何找出一个最大的那个数字呢?

我:堆(不知道怎么会说出这个答案...很迷了)。(当时脑子有点抽,这个和后面几个数据结构相关问题都说的挺迷)

面试官:blablabla说了一些,大致意思就是你不觉得这个时间复杂度有点高吗?

我:(恍然大悟)实际上一次遍历O(n)时间复杂度就可以找出最大值,用一个temp变量更新最大值,直到遍历完所有数字。

面试官:(打断了我)你不用说得太细,就是一次冒泡对吧。那10w数字如何找出最大的前20个数字呢?

我:这个地方我觉得可以使用最大堆(脑子抽了,为什么是最大堆),可以在O(nlog2n)时间复杂度解决这个问题。

面试官:(感到奇怪)为什么是最大堆呢?

我:可以建一个结点个数为20的最大堆,遍历完所有数据,停留在堆中的结点就是top 20(我当时还是没反应过来)。

面试官:那么如果现在堆中的元素是1,2,3,...,20,你有一个19节点,你是放入还是不放入呢?

我:(还是没有反应过来不是最大堆而是最小堆)我觉得可以将堆的根结点替换为19,然后调整位置,判断最终19还在不在这个堆里。

面试官:那你这个行为很尴尬

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值