数美时代C/C++面试经历(2016-02)

匿名网友 匿名网友 发布于: 2016-03-09 00:00:00
阅读 272 收藏 0 点赞 0 评论 0

笔试题不算太难,写的答题时间30分钟,结果20分钟就来问写的怎么样,好吧,,我承认是我写的有点慢。。。。写完交上去,很客气的让我等一会儿,技术面试官拿着笔记本电脑来面试,主要题目如下:

1,如何在100万个字符串(或数)中查找某个字符串(数)是否存在?
把100万个数按二进制首位是0还是1分为两部分存入两个文件,查看待查数的第一位,过滤掉一半文件,然后根据第二位
再次分为两部分,依次进行下去。。。(如果是字符串这个方法就更好理解了)
2,寻找二叉树中A, B结点的最近公共父节点
使用递归的方式在root树中找A,B,如果p结点为A或B,则直接返回,否则,在左右子树中寻找,会有两种情况:1,
左右子树一颗为空,另一颗返回A或者B,说明公共结点在另一颗子树里,对另一颗子树递归调用该函数。2,左右子树
一颗返回A,另一颗返回B,则p结点就是最近公共结点,返回p。
3,gdb怎么调试多线程?
gdb attach [pid] 如果线程进行太快来不及attach,可以在需要的地方加sleep( )。
4,多进程和多线程的区别?
多进程更加健壮,但是耗费资源,切换效率低。
5,互斥量和读写锁有什么优缺点?
互斥量只有两种状态:加锁和解锁,读写锁有三种状态:共享读锁,互斥写锁和解锁。
读写锁的并行性更高,但是速度慢于互斥锁。当写线程较多时尽量使用互斥量,在读操作远大于写操作的程序中用读写锁。
6,关系数据库和非关系数据库的区别?
关系型数据库最大的特点就是事务的一致性,读写操作都是事务的,具有ACID特性,但也因此导致读写性能较差。
关系型数据库具有固定的表结构,扩展性较差。关系型数据库通过外键的关联来建立表与表之间的关系,非关系型数据库
中数据以对象的形式存储,对象之间的关系通过每个对象的自身属性来决定。
非关系型数据库只实现了关系数据库一部分的功能
7,使用过智能指针吗?
用过,智能指针相当于对普通指针进行了封装,增加了引用计数器,每增加一个指针指向分配的内存对象计数器+1,相反则
减1,当计数器减为0时,自动回收动态分配的内存对象。为了异常安全而使用智能指针。因为auto_ptr的赋值和复制是破坏性
的,不能放入标准容器,所以一般使用shared_ptr,共享对象的所有权。
8,为什么使用protobuf而不是xml和json?
protobuf序列化后的数据更小,是xml的1/3~1/10;而且性能更好,解析速度快,比xml快20~100倍;使用非常简洁,反序列化
只需要一行代码。缺点就是序列化后的数据不可读,不方便调试。json大部分场景下可以取代xml,适合传输数据量相对较小,
实时性要求相对不高,且对可调试性有高要求的场景,如移动APP。json关联数组的特性使其具有良好的可扩展性和兼容性,
对于接口经常变化的场景很合适。json具有javascript的先天支持,广泛用在web浏览器应用。

一句话证明你来面试过
技术面试官,你要是看到了,给你们老板提意见呀!换电脑)

评论列表