Linux服务器百度携程面试

简介: Linux服务器百度携程面试

一. 百度一面

1、给一个函数,返回 0 和 1,概率为 p 和 1-p,请你实现一个函数,使得返回 01 概率一样。



2、10 亿个 url,每个 url 大小小于 56B,要求去重,内存 4G。



3、把一个 bst 转化成一个双向链表。



4、http 和 https 区别,https 在请求时额外的过程,https 是如何保证数据安全的;



5、IP 地址子网划分;



6、POST 和 GET 区别;



7、DNS 解析过程;



8、硬链接和软连接区别;



9、kill 用法,某个进程杀不掉的原因(进入内核态,忽略 kill 信号);



10、linux 用过的命令;



11、系统管理命令(如查看内存使用、网络情况)



12、管道的使用;



13、grep 的使用,一定要掌握,每次都会问在文件中查找;



14、shell 脚本;



15、find 命令;



16、awk 使用。



二. 百度二面



对照着简历问了些东西。



1、Linux 下的一些指令,$(进程 id),$?(上一条命令退出时状态),怎么查看进程,按照内存大小,CPU 占用排序等等。(大写 M 和大写 P)



2、http 的 get 和 post 方法。



3、介绍下你所了解的 epoll。



4、数据库 sql 的了解程度。



5、项目中遇到的问题,自己咋解决的等等。



6、手写一个全排列。



7、b 树和 b 树。



8、介绍一下 hash,怎么解决冲突。



9、进程间的通信,共享内存方式的优缺点。



三. 百度三面



1、说下你平时看的一些技术博客、书籍;



2、linux 下的一些指令;



3、工作中你觉得最不爽的事情是什么;



4、说下你的优缺点;



6、有没有想过去创业公司;



7、写个 strcpy 函数;



8、说说你自己的性格;



9、给你一个系统(面试官好像是无人车部门的),后台的逻辑已经实现了,但是前端加载很慢,怎么检测;



10、以后可能要学习很多新技术,你怎么看;



11、项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚);



12、系统的量级、pv、uv 等;



13、应对高并发的解决办法(分布式);



14、在项目中主要负责了哪些工作;



15、nginx 的负载均衡;



16、分布式缓存的一致性,服务器如何扩容(哈希环)。



===========


主要考察领域:


C++、Linux、算法、数据结构、网络编程、海量数据处理、数据库。



C++:


析构函数原理以及步骤;

类对象的内存存储形式;

STL各种容器的特点和实现方式;

c++进程内存空间分布(注意栈从高到低分配,堆从低到高分配);

虚函数以及虚函数的作用(简单来说是多态,本质是为了封装)(哪些是编译时确定、哪些是运行时确定);

makefile编译;

gdb调试;

如何定位内存泄露;


https://blog.csdn.net/invisible_sky/article/details/78205461


https://blog.csdn.net/invisible_sky/article/details/78205576


https://blog.csdn.net/invisible_sky/article/details/78206380

动态链接和静态链接的区别;

32位系统一个进程最多多少堆内存;

写一个c程序辨别系统是64位 or 32位;

写一个c程序辨别系统是大端 or 小端字节序;

宏定义和展开;

位操作;

内存分配;

哪些库函数属于高危函数?为什么?(strcpy等等);

一个String类的完整实现必须很快速写出来(注意:赋值构造,operator=是关键);

sizeof一个类求大小,变量、对象、指针、类等等;

指针和引用的区别;

多重类构造和析构的顺序(对称);

stl各容器的实现原理(必考);

extern c 是干啥的(必须将编译器的函数名修饰的机制解答的很透彻);

volatile是干啥用的,(必须将cpu的寄存器缓存机制回答的很透彻);

static const等等的用法;



Linux:


linux中各种I/O模型原理——select和epoll;

阻塞和非阻塞I/O区别;

linux系统文件机制;

多进程同步方式;

使用过哪些进程间通讯机制,并详细说明(重点);

linux系统的各类异步机制;

信号:列出常见的信号,信号怎么处理?

i++是否原子操作?

exit() _exit()的区别?

如何实现守护进程?

linux的内存管理机制是什么?

linux的任务调度机制是什么?

系统如何将一个信号通知到进程?

什么是死锁?如何避免死锁?

共享内存的使用实现原理;

多线程和多进程的区别(从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答。哪些东西是一个线程私有的?答案中必须包含寄存器);

标准库函数和系统调用的区别?



算法:


设计一个算法将两个字符串合并按字母排序:遍历一次统计各字符出现次数,直接按字母顺序输出,O(n)。


数据结构:


排序、查找、二叉树、图;

哈希和B树各自特点;

链表归并排序;

大根堆的实现,快排(如何避免最糟糕的状态?),bitmap的运用;

hash(例如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞);


网络:


netstat tcpdump ipcs ipcrm命令;

cpu 内存 硬盘 等等与系统性能调试相关的命令;

设置修改权限chmod;

tcp网络状态查看;

各进程状态;

抓包tcpdump;

awk sed了解;

tcp与udp的区别;

udp调用connect有什么作用?

tcp连接中时序图,状态图,必须非常非常熟练;

socket服务端的实现,select和epoll的区别(必问);

epoll哪些触发模式,有啥区别?(详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认);

大规模连接上来,并发模型怎么设计?

tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免?

time_wait状态占用资源(必须回答的详细)?

tcp头多少字节?哪些字段?(必问)

什么是滑动窗口?(必问)

connect会阻塞,怎么解决?(必考必问,提示:设置非阻塞,返回之后用select检测状态);

如果select返回可读,结果只读到0字节,什么情况?

keepalive 是什么东东?如何使用?

列举你所知道的tcp选项,并说明其作用。

socket什么情况下可读?



海量数据处理:


1、请统计100W个不等长字符串中各字符串的出现次数:建立哈希表,遍历一遍让等长的字符串映射到同一位置,里面可以再哈希链表。有两种情况:一种哈希链表中没出现过就存储该字符串并将对应的计数器设为0,有出现过的就+1。遍历一遍就完成统计。然后遍历哈希链表的计数器输出就行了。



2、设计数据结构可以快速返回0~10亿中哪些数出现了or没出现。这题和一面的一样,而且更简单,125M的bitmap就够了。



3、一个每秒百万级访问量的互联网服务器,每个访问都有数据计算和I/O操作,如果让你设计,你怎么设计?



数据库:


sql;

服务器数据库大规模数据怎么设计;

db各种性能指标;



====================


携程一面:



1.栈和堆的大小,申请一个整形数组最大可以达到多少,float的大小,(linux(不同的内核版本)和windows)


2.100万个商品价格,找出前100个,前10个,前1个,如何提高效率(聊了10多分钟)


3.外排序的磁盘io效率如何提升


4.线程同步的机制(四种锁,信号量,屏障,条件变量)


5.自旋锁的存在的问题以及自旋锁的底层实现


6.读写锁的特点,底层实现


7.100万的整形数据占多大


8.一堆数据,需要线程同步,如何实现,比较方法的优劣


9.如何用程序测试堆的大小


10.建推的时间复杂度,调整堆的时间复杂度


11.倒排索引,hash索引,B+索引的特点


12.自己对虚拟内存的理解


13.vector和数组的区别,STL的容器分类,各容器底层实现


14.三次握手和四次挥手的状态转换,问的很细,timewait,clostwait的特点


15.如何用一个指针在o(n)的时间内判断单链表是否有环


16.一道算法题:旋转数组,要求空间O(1),时间O(n)



携程二面:


1.问了c++的继承


2.重载的底层实现,虚函数的底层实现。即:阐述C++中虚拟函数的实现机制。


3.一个类,写了一个构造函数,还写了一个虚构造函数,可不可以,会发生什么?


4.如何实现一个不可以被继承的类


5.tcp和udp的区别,要实现一个简单的聊天程序,选那个?


6.epoll的两种模式的特点


7.问了二叉树的遍历(后序遍历的非递归)


8.快速排序的讲解(我用的优化后的快排)


9.加密算法,AEC,md5是对称非对称?


答:MD5的单向不可逆的加密算法;对称加密(DES\AES)、非对称加密(DSA\RSA)


10.进程和线程的区别(一直问还有没有)


11.一道编程题:三阶幻方阵



面试题整理自一位不愿意透露姓名的虹桥群众。


相关文章
|
安全 Java Linux
Websoft9:为开发者打造的高效 Linux 服务器面板
Websoft9 是一款以开源应用部署与管理为核心的服务器面板,采用“环境即服务”模式。它通过运行环境标准化、自动化配置、安全融合和资源管理四个方面实现平台与环境的深度协同。支持多语言框架预集成、云原生组件整合,提供 200+ 应用模板一键部署,并具备全流程安全防护和统一资源监控能力,助力开发者高效管理和扩展应用环境。
536 0
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
2296 21
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1278 13
|
存储 关系型数据库 MySQL
携程面试:100 亿分库分表 如何设计? 核弹级 16字真经, 让面试官彻底 “沦陷”,当场发offer!
携程面试:100 亿分库分表 如何设计? 核弹级 16字真经, 让面试官彻底 “沦陷”,当场发offer!
携程面试:100 亿分库分表 如何设计?  核弹级 16字真经, 让面试官彻底 “沦陷”,当场发offer!
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
855 24
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
1035 28
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
713 28
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
Linux
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
663 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤