第一次电话面试总结

第一次电话面试,而且是腾讯的,真的感觉特别紧张。虽然面试官小哥哥人特别好,一直在缓解气氛,但总体还是感觉状态不是很好。不管结果怎么样,先记录下这次所涉及到的知识点吧。

自我介绍:

有点紧张,把大概经历说了一下。

为什么投腾讯,以及企业文化:

谈到了百度狼性文化,其实之前看过一些相关的企业文化,但没有太深入取看。整体感觉有点不好。

问题1:C++和Python有什么区别?各有什么特点。

答:有点记不太清楚怎么回答的了。总之答得很不专业。

总结:

程序有两种执行方式,解释执行和编译执行。
PYTHON是一种脚本语言,是解释执行的,不需要经过编译,所以很方便快捷,且能够很好地跨平台,写一些小工具小程序特别合适。
而C++则是一种需要编译后运行语言,在特定的机器上编译后在特定的机上运行,运行效率高,安全稳定。但编译后的程序一般是不跨平台的。

学习一种编程语言不能看它热不热。而是要看它在某个领域的作用。就像汇编,虽然现在不热了,但是它在某些行业内还是很吃香的。PYTHON确实很强大,但在三五年内,不会作为一种主流的编程语言。至少在Windows程序开发领域内不会。

A、解释程序
所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。
B、编译程序
这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。
编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。
值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。
在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时

简短概述

解释执行:
由解释器根据输入的数据当场执行而不生成任何的目标程序
编译执行:

先将源代码编译成目标语言(如:机器语言)之后通过连接程序连接到生成的目标程序进行执行

问题2:网络传输 层的协议,概述UDP与TCP。

答:举了电话通话与邮件发送的例子,由于紧张有些语无伦次。

总结:

1.TCP面向连接(如打电话前需拨号确认连接);UDP是无连接的(发送数据前不需要建立连接)
2.TCP提供可靠服务(数据无差错,不流失,不重复,有重传机制,且按序到达);UDP尽力最大交付(不保证可靠,无重传机制,无序)
3.TCP面向字节流(把数据看成一连串无结构的字符流,每次取多少由主机决定);UDP面向报文(发送多少接收多少)
4.TCP无界(通过字节流传输,字节流太长会拆分,太短会等待,接收方确认才会删除缓冲区;如服务器缓冲区足够大,则多次传输一次接收,被认为无界);
UDP有界(不拆分不合并,几次传输几次接收,被认为有界)
5.TCP有流量控制和拥塞控制(接收方让发送方的速度调节);UDP没有流量控制(不会改变)

6.TCP的头部(20bytes)比UDP大

问题3:UDP与TCP协议应用举例

答:举了IP电话与在线传输文件的例子,感觉答得不是很好。

总结:

什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 …………

什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……有些应用场景对可靠性要求不高会用到UPD,比如长视频,要求速率

项目相关:

问到是否做过web项目,谈到了项目,其实之前跟着网课做过一些小项目,但自我感觉不是什么大项目,就没敢说。后来说了一些爬虫时的经历,以及自己搭建的博客。

问题4:git相关命令

答:好久没用过git,许多命令其实忘得差不多了。

总结:

ACM比赛相关:

一些比赛经历以及有什么帮助。

问题5:快排与堆排

答:数据结构部分还是比较擅长的,虽然优化部分由于紧张有点记不太清楚了。

总结:

快速排序使用了分治法的策略。它的基本思想是,选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。可以看出,快速排序很重要的一点就是对基准数的选择。影响快速排序性能的因素除了本身数组的有序程度,还和这个基准数有关。在下面的代码中,我们使用最经典的,选择数组的第一个数作为基准数。

快速排序流程如下:

(1)从数列中挑出一个基准值。

(2)将所有比基准值小的摆放在基准前面,所有比基准值大的摆在基准的后面(相同的数可以到任一边);在这个分区退出之后,该基准就处于数列的中间位置。

(3)递归地把”基准值前面的子数列”和”基准值后面的子数列”进行排序。

堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。

学习情况:

浏览CSDN博客,看网课,看书。


纸短情长啊文章结束了但我们的故事还在继续
坚持原创技术分享,您的支持将鼓励我继续创作!