苏小研技术面C/C++工程师

主要以C语言基础,数据结构,算法,计算机网络为主,第一个面试官可能觉得我太菜了,后面就换了个面试官。。。。。。
1.数组与链表的区别?
解:(1)数组的元素在内存中是按顺序存储的,而链表是随机存储的。
(2)数组的元素个数在定义时就必须确定,且元素的类型必须一致;而链表的元素的个数是自由的,元素也可以是不同的类型。
(3)数组的访问效率高,链表的插入/删除效率高。  
2.指针占几个字节?
3.什么是内存泄漏?
解:内存泄漏是指程序中已经动态分配的堆内存由于某种原因未释放或者无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
4.tcp和http协议的区别?
5.说一下常见的排序方式?
解:快速排序, 冒泡排序,堆排序, 插入排序, 选择排序, 归并排序, 希尔排序。
6.讲一讲快速排序的实现原理?
解:(1).先从数列中取出一个数作为基准数。
       (2).分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
       (3).再对左右区间重复第二步,直到各区间只有一个数。
7.各个排序方式的时间复杂度是多少?
8.时间复杂度的定义是什么?
解:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。 这样用大写O( )来体现算法时间复杂度的记法,我们称之为大O记法。 一般情况下,随着n的增大,T(n)增长最慢的算法为最优算法。
9.静态函数的作用?

10.面向对象的三个特征?封装  继承 多态
11.想一个思路实现求的整数部分?

解:二分法

若N大于1,则从[1, N]开始,low = 1, high = N, mid = low + (high - low) >> 1开始进行数值逼近

若N小于1,则从[N, 1]开始,low = 0, high = N, mid = low + (high - low) >> 1开始进行数值逼近

12.寻找两个字符串中相同的子字符串?
13.socket用过没有?
14.截取字符串的函数有哪些?
解:strncat和strncpy,可以从头开始来截取字符串。运用指针可以截取指定位置指定长度的字符串。





#中国移动研究院##面经#
全部评论
哥们,有二面的消息么
1 回复
分享
发布于 2021-10-19 23:45
哥们回答的这么好 还菜?
点赞 回复
分享
发布于 2021-10-18 12:14
滴滴
校招火热招聘中
官网直投
tcp和http区别?不是udp?
点赞 回复
分享
发布于 2021-10-18 18:43

相关推荐

点赞 评论 收藏
转发
4 40 评论
分享
牛客网
牛客企业服务