贝壳找房 php面试题,贝壳找房offer已拿,C++研发岗,奉献面经

贝壳,C++研发,意向书已发

一面

1.B树、B+树的数据结构,树长什么样,有什么特点?

利用平衡树的优势加快查询的稳定性和速度;B+树的数据都存储在叶子结点中,分支结点均为索引,查询时只需要扫描叶子节点,常用于数据库索引;B树其分支结点和叶子节点都存储着数据,查询时需要进行一个遍历,常用于文件索引;回答的不太好,只是说了数据库中的索引会用到这个,速度快,具体啥样不知道。

2.平衡二叉树的数据结构,讲一下特点

优点:平衡树是同种元素序列情况下的深度最小的二叉排序树。这可以减少二叉树元素查找的深度,从而提升平均查找效率。

3.写求质数的代码

1.如果用循环的方法,求前n个数以内的质数,可以对每个数求余(3~sqrt(n)),就不用非得判断(3~n)这么多数据了,减少了一半的数据量。

2.用新的方法,先做一个bool的vector出来(初始化true),判断某个值是不是true,是的话加入到素数序列,且把它对应的2倍、3倍、……n倍的值都标成false。效率最高。

4.两个排序好的数组,要求去重。

可以用set做集合的并集、交集,也可以用map实现。

vector c;

set_union(iset1.begin(), iset1.end(), iset2.begin(), iset2.end(), back_inserter(c));

set_intersection(iset1.begin(),iset1.end(),iset2.begin(),iset2.end(), back_inserter(c));

5.用来处理高并发的手段都有什么

方法:多路IO、多进程、多线程。

基本思路:

1.多核处理器,用多线程

2.单核处理器,用多协程

CPU密集型,多主机用多进程。CPU密集型,多核单主机用多线程。IO密集型用协程。很多细节,比如数据库,带宽都需要考虑。IO密集型CPU等待时间较长,不适合多线程,但是一到IO操作,就发生协程切换,提高CPU的利用率。

CPU密集型(CPU-bound)

CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率至小数点一千位以下的程序,在执行的过程当中绝大部份时间用在三角函数和开根号的计算,便是属于CPU bound的程序。

IO密集型(I/O bound)

IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,此时,系统运作,大部分的状况是CPU在等I/O (硬盘/内存)的读/写操作,此时CPU Loading并不高。I/O bound的程序一般在达到性能极限时,CPU占用率仍然较低。这可能是因为任务本身需要大量I/O操作,而pipeline做得不是很好,没有充分利用处理器能力。

6.七人排六排,要求每排人数不少于3人。

做成一个三角形,中间再有一个点。

7.线程同步的几种方式?

1)临界区:一些代码的实现,只能同时一个线程在临界区内(进入临界区是为了访问共享资源),只有当该线程退出,该块临界区才可以让其他线程进入。

2)互斥量:mutex,只有拿着互斥量的线程才能访问x资源,线程访问完毕后要归还该互斥量。感觉和临界区比较相似。

3)信号量:相当于计数器,可以允许多个线程对同一资源访问,但是需要有个访问的最大上限,来个线程,则计数器--,只有大于0时,才会分配资源。

4)事件对象:通过通知的方式进行线程同步。类似于信号和槽的机制。

8.动态链接库和静态链接库的区别

二面

1.UDP中的socket编程,需不需要用connect,如果用了会发生什么?

是不需要用的,因为UDP是个无连接的方法。调用connect会因为连接不上而返回错误。

2.根据GPS可以解析出来经度纬度,设计一个数据库中的表,可以实现搜索附近的人的功能,这个表要怎么设计,索引要怎样建立。

3.给一个图像上加上不明显的水印,怎么加

4.你会什么?研究过什么?有看过开源代码么?

5.写一下傅里叶变换的公式

6.撕代码,求公约数代码。

7.怎样得到变量名。就是把变量名转化成字符串。

8.网络传输中一台设备去连接到baidu这个网址,目标ip和目标mac是什么。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值