北京南天软件有限公司

7人关注 关注 141人分享

公司福利 | 工资涨幅 | 年终奖 | 晋升机会 | 工作节奏 | 工作压力 | 工作时间 | 工作氛围

北京南天软件有限公司校园招聘面试经验(共15条) 最近更新时间:2022-05-19

2022-05-18 | 校园招聘
面试过程:

通过看智联招聘信息,得知招聘信息,目前还在等待面试,好激动。希望有机会专业面试过了,希望被录取。希望有机会专业面试过了,希望被录取希望有机会专业面试过了,希望被录取希望有机会专业面试过了,希望被录取

面试官问的面试题:

1.C++源文件从文本到可执行程序的过程
预处理,产生.ii文件
编译,产生汇编.s文件
汇编,产生目标.o/.obj文件
链接,产生可执行.out/.exe文件
2.#include的顺序
若要在a.h中声明b.h中定义的变量,则在a.c文件中必须先引用b.h文件,再引用a.h文件

3. #include<>和“”的区别
<>表示标准头文件,编译器在预定义位置查找该文件
“”表示非系统头文件,查找从源文件所在路径开始,查找范围大于<>
4. 进程与线程区别
资源:线程比进程节俭。启动新的进程需要分配独立的地址空间,建立数据表来维护代码段、堆栈段和数据段。
切换效率:同一进程中的不同线程共享地址空间,线程彼此切换的时间远小于进程切换
通信:线程之间共享数据空间,进行通信时,一个线程的数据可以直接由其他线程共享。而进程之间进行数据传递必须使用进程间的通信方式进行
5.使用线程的优点
具有多任务、并发性的特点

多CPU系统更加高效
改善程序结构,长而复杂的进程可以分为多个线程,成为几个独立或半独立的部分,是的代码更易理解和修改。
6.malloc()实现方案
实质:将空闲的内存块链接起来的空闲链表
调用malloc()函数后,顺序遍历空闲链表找到满足大小需要的空闲块,将多余的部分继续链入空闲链表
调用free()函数,将用户释放的内存块连接到空闲链表上
malloc()请求延时,即将相邻的小空闲块合并为大的空闲块
从OS角度,进程分配内存的两种方式分别由两个系统调用完成:brk和mmap。这两种方式均分配的是虚拟内存,并未分配物理地址。只有在第一次访问发生缺页中断时,才由OS分配物理内存并建立映射关系。
brk将数据段的最高地址指针往高地址推
mmap是在进程的虚拟地址空间中(堆栈之间成为文件映射区域的位置)找空闲的虚拟内存
7.有了malloc()和free()为什么还要有new()和delete()
malloc()是C++/C语言的标准库函数,new/delete是C++的运算符,都可用于申请动态内存和释放内存。
非内部数据类型的对象而言,光使用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,消亡前要自动执行析构函数。Malloc/free是库函数不是运算符,不在编译器控制权限内,不能够把执行析构函数和析构函数的任务交给malloc/free,故创造新的运算符
C++需要能够完成动态分配内存和初始化工作的运算符new,一个能完成清理和释放内存工作的运算符delete
8. C++内存管理方式
栈(Stack):存放局部变量,函数参数,由编译器自动分配和释放。进出栈由计算机指令支持,分配有专门的寄存器存储栈的地址,内存空间连续有限。
堆(Heap):程序员手动分配释放(new,delete),动态分配,内存空间无限制,因此产生内存碎片。OS中有记录空闲块的链表,收到内存请求即遍历链表找到第一个符合的空间进行分配,并将节点从链表中移除。在内存空间首地址中记录本次分配的大小,用于delete释放内存空间
全局/静态存储区:全局变量和静态变量分配到该区,程序结束时自动释放,包括DATA(全局初始化区)段,BSS段(全局未初始化区)。初始化和未初始化的变量放到不同的区。BSS段在程序执行前自动清零,而DATA段在程序执行前已经为0
文字常量区,存放常量字符串,程序结束后系统自动释放
程序代码区,存放二进制代码
9. hash表实现
散列函数hash function,最常见的为f(x)=x%tablesize
碰撞问题,即不同元素的散列值相同。解决方法包括线性探测(依次后移),二次探测(用新的散列值再次散列),拉链法(直接链接在同一个地址上)
10.TCP模型以及协议
四层模型:

应用层:Telnet、FTP和e-mail
传输层:TCP和UDP
网络层:IP、ICMP和IGMP
链路层:设备驱动程序以及接口卡
11.进程间的同步方法
互斥量(mutex)
条件变量(Condition Variable)
信号量(semaphore)
一般手写就是PV操作,对应的是wait()和signal()

12.const的用途
定义只读变量即常量
修饰函数的参数和函数的返回值
修饰函数的定义体,被const修饰表示不修改成员变量的值
13. 指针和引用的区别
引用是变量的别名,内部实现是只读指针
引用只能在初始化时被赋值,其他时候值不能被改变,指针的值在任何时候都可以被改变
引用不能为NULL,指针可以
引用变量内存单元保存的是被引用变量的地址
“sizeof引用”=指向变量的大小,”sizeof指针”=指针本身的大小
引用变量在源代码中当作普通变量使用,而作函数参数时,内部传递的实际上是变量地址
14.Static作用
函数体内static变量作用范围为函数体,不同于auto变量,该变量的内存只被分配一次,因此下次调用时仍然维持上次的值
在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外的其他函数访问
在模块内的static函数只可被这一模块内的其他函数调用,适用范围限定在声明的模块内
在类的static成员变量为整个类所拥有,对类的所有对象只有一份拷贝
在类的static成员函数为整个类所拥有,这个函数不接受this指针,因此只能访问类的static成员变量
15.头文件中的endif/ifndef/define作用
防止该头文件被重复引用

16. TCP和UDP区别
TCP传输控制协议,提供面向连接、可靠的字节流服务。客户和服务器彼此交换数据前,必须双方建立一个TCP连接,之后才能传输数据。且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据端到端传输。
UDP用户数据报协议,简单的面向数据报的传输层协议。不可靠,只负责把应用程序传给IP层的数据包发送数据,不保证到达目的地。由于不需要建立连接,且无超时重发机制,因此传输速度很快。

2022-04-20 | 校园招聘
面试过程:

面试比较简单了一点简单基础题,分为三轮面试
进行自我介绍认识面试 还有基础笔试
最后就是等通知

面试官问的面试题:

变量/函数的声明和定义之间有什么区别

答案:变量/函数的声明仅声明变量/函数存在于程序中的某个位置,但未为其分配内存。

2020-04-01 | 校园招聘
面试过程:

首先是HR一对一面试,询问非技术性问题,包括成长经历、家庭情况、思想状况等等,也算是从侧面观察面试者人格吧,最后反问了HR一些公司的相关情况,HR一一给予回答。
之后是技术官电话面试,我自己先介绍基本情况,技能范围,之后技术官问了2个问题,就结束了。
然后几天后收到了offer。

面试官问的面试题:

1、BGP选路原则有哪些?
2、简述BGP防环机制。
3、简述你掌握的专业技能。
基本就这些,老辣的面试官完全可以从你的回答推断出你的能力和潜力。

2019-10-19 | 校园招聘
面试过程:

在一个教室里先一对一技术面,问关于最熟悉的项目的问题进程线程网络编程,一些c的基础题,还有数据库,linux命令等等总之很简单很基础。然后在与HR一对一面,问一些个人情况,四六级,成绩有无挂科,介绍了公司情况,同时我也问了很多问题。

面试官问的面试题:

技术面,问关于最熟悉的项目的问题,进程线程网络编程,一些c的基础题,还有数据库,linux命令等等总之很简单很基础。然后在与HR一对一面,问一些个人情况,四六级,成绩有无挂科

2021-04-21 | 校园招聘
面试过程:

先是笔试,考的挺基础的,C++的基本语法,指针和引用的区别,数组定义,数据库,SQL语句,数据结构,都是很基础的题,英语翻译,基本都能过。

面试官问的面试题:

先是技术面,问的都很基础,有没有用过数据库,简历上的项目,学习成绩,然后是人力面试,为什么不考研,打算留在北京发展吗

2020-12-21 | 校园招聘
面试过程:

询问了一些基本情况 做了自我介绍,对于英语的要求比较严格,必须过四级,问了一些项目相关的知识点等

面试官问的面试题:

问了一些项目相关的知识点等,Linux操作系统的使用一些常用命令,mysql数据库的相关语句及其优化查询等方式

1   共 1 页