首页 > 代码库 > 百纳信息(海豚浏览器)面经
百纳信息(海豚浏览器)面经
公司位置在光谷大道金融港,是武汉少有的移动互联网公司。公司人不多,毕竟是创业型公司。整个办公区有一层楼,只林星摆着几张圆桌和沙发,空旷得很。给人的感觉是简单,干净。
一面的问题记录如下:
1.写个memmove。
答:memmove与memcpy的区别是,memmove要考虑dest和src的内存有交集的情况。如果有交集的话,应该从尾到头倒过来赋值。具体的代码我就不贴了,网上有很多。
2.select函数是怎么一回事?用过epoll函数没?
答:互联网公司基本上都会问到这两个函数吧。这个是多路复用IO,详细的大家可以上网查一查。
3.同步IO和异步IO的区别?
答:区别在于,同步IO中,数据从内核复制到用户进程的过程中,用户进程阻塞,而异步IO中,是不阻塞的。同步IO包括了阻塞IO,非阻塞IO,信号驱动IO,多路IO复用。
4.Linux的常用命令,怎么看系统负载,怎么看内存使用情况?
答:负载和内存都可以用top命令查询,常用的还有df,umask,netstat,chmod,kill等等,建议想从事后台服务器开发方向的同志们,一定要习惯在Linux命令行环境下写代码,调代码。我推荐装个虚拟机,使用ubuntu操作系统,在windows中使用SecureCRT去远程连接虚拟机的Linux操作系统,这很方便。
5.g++的常用参数?怎么编译静态库,怎么编译动态库?
答:这个大家可以去网上查一查,肯定比我答的详细。这里还要说一句,在Linux环境下,是没有像vs2010那样的IDE的。编译使用g++,编译大工程使用Makefile,调试使用GDB这三个是一定要掌握的。
一面完了以后,等了一下,直接二面。二面应该是技术总监级别的人物,挺年轻的,但是比较有气场,估计跟vc打交道练出来了。
先谈了一下除了C++,还关心什么技术?这里在考察知识面了。我的知识面不算宽,只简单谈了谈正在学python,hadoop。后面面试官给我出了道题:每个IP地址都有对应的地区,例如1.1.1.1~2.2.2.2位于美国,3.3.3.3~5.5.5.5位于中国,这些对应关系数据已经有了,设计数据结构将这些对应关系存起来,然后实现函数,参数是一个IP,返回它对应的地区。
这一题可以用字典树来解决。将IP的四个十进制数取出来,首先判断第一位落在哪个节点,然后根据第二位在该节点的子树中寻找...直到找到叶子节点,返回叶子节点中的location熟悉。节点我是这么设计的。由于子树是有序的,因此可以用二分法查询子树。
struct Node{ Node *sz[256]; int beg; int end; int pos; string location;};
百纳信息(海豚浏览器)面经