后端开发面试自我介绍_后台开发面试经验 - 共117条真实后台开发面试经验分享 - 职业圈...

面试经历: 9月份开始校园招聘,标准的校招流程,2次技术面+1次hr面,顺利拿到offer

所有面试都在广州大学城进行 面试官提的问题: 一面:

基础知识:1.编码中有没遇到过野指针的情况(有,C++ class的深复制、浅复制)

2.关于C++异常的处理(答了构造函数中要注意捕捉异常的情况,若在构造函数中申请一块内存后,程序没有捕捉异常就结束,之前申请的内存是没有释放的)

操作系统:1.进程与线程的区别

Linux中进程与线程的结构是一致的(不知道现在新版本内核还是不是这样),只是线程通常只有自己的堆栈和寄存器,多个线程共享同一个进程的数据,同时线程切换的时间远小于进程切换的时间

2、怎么解决线程的竞争

锁、信号量

3.堆与栈的区别

堆通常由程序员分配、释放,系统不会自动释放,地址不一定是连续的(管理内存分配的数据结构是链表),堆的大小受限于计算机系统中有效的虚拟内存

栈由编译器分配、释放,用于存放函数参数、局部变量等,栈的最大容量是系统预先规定好的

两者地址增长的方向是相反的

数据结构:1.用hash、红黑树、b-tree、二叉搜索树做索引的区别(自己谈了一下不同数据结构做索引的优缺点、时间复杂度)

2.假设用户的ID都是大于0的int型整数,怎么快速提供用户的在线状态查询

简单的做法可以是用一个int的数组来记录用户的状态,以用户ID作为索引,用0/1表示用户的状态

假如有上千万的用户呢,如何减小内存的开销?

可以使用bitmap,使用一个bit表示用户的状态,内存使用减少了32倍(原来需要32bit来表示用户的状态)

网络: select和epoll的区别

二面

基础知识:1.C/C++中传值的方式(值传递,指针,引用)  2.struct的内存对齐

项目: 1.项目用到了哪些技术  2.服务最多支持多少并发(要做压测,了解自己写的程序的性能)

网络: 服务器的设计方案,不同方案的优缺点(一个客户端一个进程、一个客户端一个线程、异步IO……可以参考Unix网络编程)

算法:1.集合中的元素都是整数,求两个集合的交集  2.如果两个集合是有交集的,我们认为这两个集合是一类的,现有N个集合,求他们的所有的分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值