面试开始
2020年3月19日20.02
首先,介绍一下自己的专业,和自己擅长的领域。
问题1:问我的项目,把项目的流程,实现说了一下,以及这个mybash和bash有什么不一样的点。
问题2:两个主机在局域网里面,不知道IP,怎样传送数据(懵逼),他提醒了一下,使用特殊标记,我把具体实现大概说了一下。
(因为第一个问题,没回答好,我说你要不问点C基础,他说,不好问。)
问题3:结构体的硬拷贝(我没理解他的意思,他最后说,是他的描述有问题,然后跳过了)
问题4:TCP和UDP的区别
问题5:进程和线程概念,我说了句多线程程序在多处理器下才用,他反问,单处理器不能用多线程吗?(懵逼),然后回答:多线程在单处理器下,毫无用处,因为没办法同时刻执行多条路径,还会导致CPU资源浪费。又问了多线程的实现方式,说了说调用线程库,他问有别的办法吗?我说没有接触到,并且说了自己看了一点linux的书,说了一下linux的多线程是内核级线程,但是自己不懂。他表示理解。
问题5:口述一下堆排序,快排的实现,还有时间复杂度,啥的。在快排讲解之中加入自己的理解为什么快排与堆排都是NLogN,为什么快排叫做快排,从多线程角度讲了一下,他轻蔑的笑了一下,我???不理解,这个问题就算过了。
这个空档吐槽了一下腾讯课堂,说了一下我对腾讯课堂使用UDP的看法,他问我为啥不能是TCP(就等着他问这一句),讲了一下,udp做实时视屏的好处,我说:我的老师告诉我每一种方法都有它的特点,我们不能说好或者坏,在不同的环境下去考虑合适的方法,巴拉巴拉,他表示赞同。
问题6:假如5 1 2 3 4中的逆序数我们看做4个,5 2 1 3 ,我们看做有3个逆序数,给你个数组让你去找其中的逆序数,你怎样设计,我想了想,说用选择排序,他说时间复杂度太高了,有没有NLogN的,我想了一会说,堆排(明知道是错的还挣扎),他说堆排找出来的不全,给我讲了,为啥不全。让我继续想,最后:我说我这一时半会也想不出来,(有点灰心丧气),他告诉我用二路归并,我…….,然后我把怎样实现去说个一下,他让我别灰心,不怪我,能想到选择排序就很好了。我给他讲了讲我对二路归并与快排之间存在的联系(想着扳回一局),他问我,怎样去实现二路归并排序,说用四个指针,他反问两,三个可以吗?我说可以,但是不好,讲了讲如何用四个指针去做优化。他问了点细节,我就见招拆招答了。
他跟我讲,其实找逆序那个,大数据用的场景也挺多,举个一个网易云的例子,怎样去给两个歌单相近的人推荐歌曲,我表示是自己才疏学浅。他说没事。他表示对苏老师的看法的赞同:每一种方法都有它的特点,我们不能说好或者坏,在不同的环境下去考虑合适的方法(算法没有绝对的好与坏,看环境)。
再次和他说了一下几个排序的特点,简单说了一下冒泡和选择,从稳定性出发。希尔排序学习的时候的看法。
排序算是过了。
问题7:问了一下BST树,我擅作主张给他讲了讲BST的特点,应用和创建,以及怎样去创建一个最合理的BST树,讲了讲AVL,RB树,与BST树,一步一步的发展。他觉得我这块没啥大问题就不再其他的了,跳过了。
聊了会天,瞎扯,问他在那个部门,主要是干啥,和他讲了讲他的产品给大家带来了多少便利,夸他一波。
问题8:一个箱子N个球,一次只能取1或者2个,然后有多少种取法。
和他讲了讲我的想法,他说你说得对,但是你把问题想的太复杂了,问我有没有更好的办法(从程序人员角度),疯狂提醒我,我说:这个我现在想比较紧张想不出来,说明自己理解它是一个动态规划问题,讲了一下自己写过一篇01背包的博客,以及对动态规划问题的理解。他给我最后给我讲了这个题。(尴尬)
他说他没什么问题了,后面会有其他人联系我,我和他讲了讲自己曾经去广州打过暑假工,可以接受那边的气候,说了我对腾讯的认识,然后他表示程序员很累,说了一下,为什么选择了这个行业。又谈了谈疫情,就说再见了。
结束2020年3月19日21.19