@

白嫖不好,要不先赞在看!

一 自我介绍

本人小硕,秋招期间参加了不少安全类相关公司(深信服,绿盟等),另外参加了京东,小米,滴滴等互联网公司面试,同时也面试了几个研究所和一个银行,下面总结下秋招相关情况。

二 面试情况

公司名称 面试岗位 面试情况
小米 Linux内核开发 三面!挂
深信服 c/c++开发 四面 拿到offer
bigo c/c++开发 四面 拿到口头offer
滴滴 网络研发工程师 三面 挂场景
人大金仓 c语言开发工程师 三面 拿offer
京东 c++研发工程师 二面!挂
绿盟科技 防火墙开发工程师 没有去参加二面
浦发 软件开发工程师 拿到offer
中国网安(30所) c防火墙开发 拿到offer
映客直播 后台开发工程师(go) 二面挂(印象很深刻)
鼎桥(网上怎么变成了华为鼎桥。。) c/c++软件开发 拿到offer

这是小蓝整理的Linux后台开发面试高频题目(除了语言部分,其他部分差别应该不大),并提供相关知识的书籍或视频资源。

三 相关知识点汇总

1 c/c++相关

  • c++虚函数原理
  • 智能指针
  • c语言如何实现c++对象以及私有成员
  • c++多态实现
  • new和malloc的区别以及底层实现原理
  • STL中的vector怎么扩容
  • 虚函数指针的初始化过程
  • c++11原子变量介绍
  • c++11特性有哪些,说用过的
  • 怎么理解重载与重写
  • 怎么理解c++中的static关键字
  • vector和list 的区别
  • c++的内存分配
  • map与set的底层实现
  • 类静态变量的初始化
  • 析构函数可以是虚函数?为什么
  • 深拷贝与浅拷贝
  • 指针常量,常量指针的区别

c语言语法推荐书籍: 《c专家编程》《c与指针》

c++语言语言推荐书籍:《c++ primer》《effect c++》

c++语言stl底层原理:《STL源码剖析》

2 计算机网络

  • 介绍下proactor和reactor
  • reactor的组成
  • TIME_WAIT危害
  • TIME_WAIT时长,为什么?
  • IP为什么要分片
  • 项目中说用到线程池,开多大,为什么运用线程池?
  • select和epoll区别
  • select什么情况返回0
  • epoll可读情况有哪些
  • 什么时候需要TCP四次挥手?
  • 如何设置非阻塞
  • 什么是零拷贝?
  • tcp与udp的区别以及应用场景
  • 如何设计一个可靠的udp
  • 粘包如何解决
  • 讲一下拥塞控制和流量控制
  • http和https区别
  • 是否了解中间人劫持原理
  • http协议格式,几种方法,功能是什么
  • chunk块了解?介绍下
  • 有chunk的时候contentlength是什么样子
  • 半连接在哪个阶段
  • 三次握手四次握手详细过程,越详细越好
  • libevent结构,内部实现
  • tcp的可靠性体现在哪里
  • ARP协议工作流程
  • epoll中的ET和LT模式
  • 介绍下滑动窗口
  • 指针与引用的区别
  • Accept发生在三次握手哪个阶段
  • Udp的接收缓冲区和发送缓冲区和tcp的区别
  • http长连接与短连接的区别
  • udp包长度
  • 一次url访问会经历哪些过程
  • 数据包乱序会处理?
  • seq为1000,发送了1000个数据,下一个seq是多少?
  • syn如果丢了,重传多少次

tcp/ip相关推荐书籍:《tcp/详解:1》

熟悉使用wireshark捕包工具,加深印象可以使用python的一个库,scapy/dpkt.

3 数据结构相关

  • hash处理冲突的方法
  • 二分查找及其变种
  • 数组与链表的区别
  • redis数据结构用过哪些,了解跳表?
  • 红黑树比平衡二叉树有哪些优点
  • 二叉树,b+树,hash,二叉查找树区别
  • 说说红黑树的特性
  • 各种树,排序的时间复杂度
  • 数据库索引,事务,事务级别
  • 不考虑事务的隔离性会出现什么问题
  • 事务隔离级别
  • 索引的类型
  • AC自动机时间复杂度

数据结构书籍《大话数据结构》

极客时间王大佬/谭大佬专栏

4 数据库相关

  • 如何提高查询速度?
  • 加了索引就快了?
  • 数据库索引底层结构
  • mysql与memcache的区别
  • mysql常见三种存储引擎的
  • MySQL B+Tree索引和Hash索引的区别?
  • B+树索引和哈希索引的明显区别是:
  • 非关系型数据库和关系型数据库区别,优势比较?
  • mysql常见查询优化方案

mysql书籍推荐:《mysql必知必会》,《高性能Mysql》

5 操作系统

  • 进程与线程的区别
  • 多进程与多线程区别,应用场景
  • volatile和原子变量的区别
  • proc文件系统
  • 自旋锁与普通锁的区别
  • 虚拟内存
  • 进程的内存分布
  • 栈内存为什么由系统自动分配和释放
  • 守护进程如何创建
  • 进程间的通信方式及其区别,应用场景
  • 死锁条件和解除
  • 进程调度方式
  • 对编译连接的理解
  • 共享内存实现原理
  • 僵尸进程是什么,如何处理
  • 自旋锁在单cpu与多cpu下的使用
  • 用户态与内核态

操作系统推荐书籍:《深入理解操作系统》,《Linux内核设计与实现》

6 Linux基础知识及应用编程(后台必备!)

  • 如何查看进程打开的文件
  • 介绍下nm与ldd命令
  • shell命令查内存,端口 ,io访问量,读写速率
  • awk grep具体应用
  • 硬链接与软连接,目录可不可以用硬链接
  • 常见命令netstat iptable tcpdump top
  • makefile介绍下(cmake介绍下)
  • gdb查看堆栈中所有遍历
  • gdb查看shared_ptr指向的内容
  • gdb如何调试多进程多线程
  • g++和gcc编译出来有什么区别
  • 死锁怎么调试
  • core文件中是什么,gdb调试core文件
  • 如何读取一个10G文件,cat一个10g文件会发生什么

Linux基础命令推荐书籍:《Linux就该这么学》

Linux应用编程推荐书籍《后台开发应用与实践》《Linux多线程服务端编程》

补充资料:gdb手册和makefile详解

7 大数问题

  • 有200亿qq,但实际只有25亿用户,找到重复的qq
  • 25亿qq占用内存多大
  • 1-100万,计算找出所有的质数(计算密集型任务),用单线程与多线程怎么处理
  • 1个G的文件写程序,从A机器发送到B机器,怎么发?
  • 100G的文本,每行80k还是80字符,提示用多个机器,多进程,多线程,求出重复最多的行。一个机器内存8G,计算每个机器大概分多少?能读取100G的文本吗?找重复率前十的文本
  • 三个有序的序列,查找公共的部分,第一次我说用哈希表,他说序列太大,空间复杂度要低点,我说了二分查找,他问三个序列查找的顺序和时间复杂度。(时间复杂度为NlogN logN)
  • 100WURL,如何存储
  • 10台服务器,100w用户,如何进行负载均衡,如何有个服务器挂掉了咋办
  • 10000个数据查找最小的100个?时间复杂度?
  • 场景题:QQ的服务器会保存登录用户的QQ号,只要有登录,文件里面就会有记录,现在需要统计哪些QQ号登录过,怎么做?(先说了分治用小文件,他说除了这个了,我说bit数组,他就问需要多大内存?)

大数问题通常的套路是hash,分治,布隆,bitmap,如果推荐的话还是上面数据结构相关资料.当然如果能了解下比如hdfs文件系统,mapreduce,spark/flink流式计算最佳哈

8 手撕算法(递归非递归)

  • 链表有无环判断
  • 实现一个单例模式
  • 给一个字符串判断单词数
  • 开方算法
  • 青蛙跳台阶
  • 常用排序(快排和归并要写吐)
  • 反转链表
  • 两个链表,寻找公共节点
  • 查找字符串中不重复的最长子串
  • LRU
  • 手写求树的深度的代码
  • 手写生产者消费者
  • 编程实现string类
  • 两个数组A,B,A有的B都有,求B-A;
  • 输入一个字符串,输出它的全排列
  • 统计完全二叉树多少个节点
  • memcpy实现

算法学习书籍推荐《剑指offer》,建议三遍哈。

leetcode分专栏练习几题,不在多,在于精。

9 针对项目相关

  • 介绍一个你做的比较的项目,几个人做的,担任什么角色
  • 项目的技术点在哪里
  • 项目不足在哪里
  • 你在项目中学到了什么
  • 让你优化项目中的一点,如何做
  • 项目什么架构
  • 测过系统性能吗,挂掉怎么办?

最好是自己做过的项目,即时不是也需要弄明白其架构,为什么这么做,有什么优点,什么优化方案?

10 场景题

  • 给一个场景,设计一下定时对url进行爬虫,比如对新浪1个小时爬虫n次,然后某些博客可能1个星期爬虫1次。
  • 给一个场景,设计服务器实现爬虫的url去重,如何让多个服务器对一个url爬虫指定次数
  • 好多小文件,设计一个服务器来实现如何存储
  • 设计两地高效传文件

这部分

11 架构/分布式/中间件相关

  • 常用负载均衡策略
  • 一致性hash原理
  • 缓存容灾中数据一致性问题
  • 了解cap理论吗
  • 介绍下高可用,高性能,可伸缩基本概念。。
  • 了解微服务?docker?k8s?
  • Nginx了解到什么程度,nginx配置更新实现,事件模型

推荐书籍:《redis设计与实现》《从0开始学架构》《docker入门到实践》《大型网站技术架构-核心原理与案例分析》

12 总结

以上是技术面试中秋招常遇到的相关题目,希望对大家有帮助。所有资料,扫描下面二维码直接领取。


❤️ 看完三件事:如果您看完有一点点收获,快速迎娶白富美方式:
1 关注公众号「我是程序员小贱」,第一时间阅读最新的文章,公众号后台回复 [小天使] 送你 最新的编程技术资料。
2 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
3 关注我和专栏,让我们成为好基友。

面试总结 | Linux后台开发不得不看的知识点(给进军bat的你!)的更多相关文章

  1. 面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记

    文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 文章是由自己笔试面试腾讯的笔记整理而来,整理的时候又回顾了一遍,中间工 ...

  2. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入L ...

  3. Linux后台开发面试问题汇总

    个人从事安全后台开发,当然是linux环境下的了.举几个常见的问题.1. 数据结构基础.比如实现一个最简单的哈希表.2. 操作系统基础.linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长, ...

  4. linux后台开发核心技术

    3. 常用STL的使用 3.1. string (1)string类的实现(使用strlen.strcpy.strcat.strcmp等,注意判NULL). (2)C++字符串和C字符串的转换:dat ...

  5. linux后台开发必备技能

    一.linux和os: 1.命令:netstat tcpdump ipcs ipcrm  这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 2.cpu 内存 硬盘 等等与系统性能调试相关的 ...

  6. Linux后台开发应该具备技能

    一.linux和os: 1.命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 2.cpu 内存 硬盘 等等与系统性能调试相关的命 ...

  7. Linux后台开发常用工具

    内存分析工具valgrind valgrind辅助工具qcachegrind 可视化查看valgrind结果 淘宝DBA团队发布的监控脚本,使用perl开发,可以完成对linux系统和MySql相关指 ...

  8. [刘阳Java]_美团点评2018届校招面试总结_Java后台开发【转载】

    美团喜欢一口气把三轮技术面和HR面一起面完,虽然身心比较累(每一面差不多一个小时),不过也算是一个好事,不像某些公司一天就一面然后让回去等消息,等面试通知也等得让人很焦虑,而且还容易出现面试时间冲突. ...

  9. linux后台开发常用调试工具

    一.编译阶段         nm                 获取二进制文件包含的符号信息 strings           获取二进制文件包含的字符串常量 strip             ...

随机推荐

  1. node多进程的创建与守护

    node是单线程运行,我们的node项目如何利用多核CPU的资源,同时提高node服务的稳定性呢? 1. node的单线程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系 ...

  2. 20191024-3 互评Alpha阶段作品——扛把子组

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9860 基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评 ...

  3. Git安装--Windows

    Git安装配置 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://gi ...

  4. 【原创】够强!一行代码就修复了我提的Dubbo的Bug。

    这是 why 技术的第 28 篇原创文章 之前在<Dubbo 一致性哈希负载均衡的源码和 Bug,了解一下?>中写到了我发现了一个 Dubbo 一致性哈希负载均衡算法的 Bug. 对于解决 ...

  5. 「2018-11-05模拟赛」T5 传送机 解题报告

    5.传送机(sent.*) 问题描述: 黄黄同学要到清华大学上学去了.黄黄同学很喜欢清华大学的校园,每次去上课时总喜欢把校园里面的每条路都走一遍,当然,黄黄同学想每条路也只走一遍. 我们一般人很可能对 ...

  6. Vue.js 入门 --- vue.js 安装

    本博文转载  https://blog.csdn.net/m0_37479246/article/details/78836686 Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据 ...

  7. Netty--【详解】

    Netty概述:1.netty是基于Java NIO的网络应用框架,client-server框架2.Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一 ...

  8. SpringBoot基于数据库的定时任务统一管理

    定时任务1 import lombok.extern.slf4j.Slf4j; /** * @author Created by niugang on 2019/12/24/15:29 */ @Slf ...

  9. Spring工程报错

    错误日志: 2014-09-24 10:50:16 [org.springframework.context.support.FileSystemXmlApplicationContext]-[INF ...

  10. 一款精美的Toast第三方库的简单使用

    以前一直用的安卓原生Toast,个人感觉Toast这东西,没必要花功夫,知道看到了Toasty这东西,立刻被圈粉了,真的非常好看. 项目地址 我们都知道,安卓原生Toast的用法是 Toast.mak ...