嘻嘻,祝小仙女们女神节快乐!

看完别忘点个在看哦

此系列内容以及观点仅个人感受,不妥之处直接私我!目的为了大家能更好的知道面试题难度以及如何准备,希望能让大家少浪费时间寻找资料,多点时间学点干货!因为篇幅原因,大部分题目题解简洁,但有相关资料推荐进阶阅读,学会使用搜索引擎是一门艺术!望谅解!

公司岗位都是后台开发工程师,这段时间很多公司远程办公(疫情),可能不少也选择了他们产品吧(并不是打广告),据了解工作+生活比较好平衡

一 Zoom面试

一面,二面,三面时间间隔比较快,参加完笔试(1个小时),如果通过就面试!而且面试过程中基本上没有涉及语言语法知识。

1 一面(视频面40分钟)

  • 自我介绍

主要表明自己姓名,学校,为什么面这个岗位或者公司,具有XX技术,想尝试贵公司等。

  • 说说线程和进程

在 Linux 下,程序或可执行的文件是一个静态的实体,也就是一组指令的集合。进程是一个动态的实体,有自己的生命周期,既然有生命周期,那么生死需要保障,如何调度就成为很重要的一个环节。恰巧线程就成为了操作系统进程调度器的最小执行单元。画个图。

进程和线程

从这个图(灵魂画手)我们可以得出一个进程包含多个线程。那么机智的面试官就会问。

  • 为什么需要多个线程?

回答:各个线程(我们可以称作为工作线程)各自去处理自己的任务。同时在单核时代,多线程主要是为了提高 CPU 和 IO 设备的综合利用率。

举个例子:当只有一个线程工作的时候,会导致CPU计算时,IO设备空闲;进行IO操作时,CPU 空闲。可以简单地理解成,这两者的利用率最高都是 50%左右。但是当有两个线程的时候就不一样了,一个线程执行 CPU 计算时,另外一个线程就可以进行 IO 操作,这样 CPU 和 IO 设备两个的利用率就可以在理想情况下达到 100%;

多核时代: 多核时代多线程主要是为了提高 CPU 利用率。举个例子:假如我们要计算一个复杂的任务,我们只用一个线程的话,CPU 只有一个 CPU 核心被利用到,而创建多个线程,就可以让多个 CPU 核心被利用到,这样就提高了 CPU 的利用率。

面试官:多个进程也可以的呀。

回答:不同进程地址空间独立,线程共享内存如下图。同一进程的多个线程共享一份全局内存区域包括初始化数据段、未初始化数据段和动态分配的堆

进程线程资源情况
  • 死锁解释一下

我们先看看下图了解下什么是死锁。

死锁

线程A 已经成功拿到了互斥量 A,正在申请互斥量 B ,而同时在另一个 CPU 上,线程 B 已经拿到了互斥量B ,正在申请互斥量 A 。彼此占有对方正在申请的互斥量,结局就是谁也没办法拿到想要的互斥量,于是死锁就发生了。

知道了什么是死锁以后,了解死锁四大必要条件以及如何避免。

四大必要条件

互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。

请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。

不可剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。

循环等待条件: 若干进程间形成首尾相接循环等待资源的关系

1 避免死锁最简单的方法就是总是按照一定的先后顺序申请这些互斥

2 用锁来尝试,得不到锁则返回

  • 了解音视频处理相关知识吗

因为不是这个方向,但是公司业务很多是这一块,所以面试之前需要了解一下,比如音频格式,视频格式,视频编码等。所以,如果决定了面试,还是了解了解公司的主打产品吧

  • 介绍一下http与https及区别(第三次出现)

HTTPS和HTTP的区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

  • 项目中用过kafka,redis了解吗,简单介绍下redis和kafka

redis

1 提供高性能、原子操作内存键值对,具有高速访问能力,可用做消队列的存储,但是需要自己在上层应用实现

kafka

1 巨型存储量,支持TB甚至PB级别数据

2 高吞吐、高IO:一般配置的服务器能实现单机每秒100k条以上消息的传输

3 消息分区、分布式消费:保证消息顺序传输。支持离线和实时数据处理

  • mysql优化

主要从以下几个方面考虑

1 表的设计合理化

2 分表技术(水平分割,垂直分割)

3 读写分离

4 mysql服务器引擎升级

5 定时清除不需要的数据,进行碎片整理

6 存储过程

7 可以通过show stats了解sql执行频率,explain分析sql语句执行情况等

  • 编程题1 合并有序链表(不知道大家看了几篇,有没有发现这类型的公司题目总是这几道?)

[leetcode链表系列]4 合并有序链表

  • 还有什么可以问我的吗?

这个问题一般来说会有下文,只要不问一些敏感话题就行了,比如可以问问对于应届生的培养等。

2 二面(视频面35分钟)

忘记相隔了多少天,某一天晚上一个小姐姐打电话约时间面试。。

  • 自我介绍

  • 看你一面说过中间人攻击,你介绍一下

    中间人攻击

首先它是指攻击者与通信两端分别建立联系,使得通信双方认为在和私密的连接与对方通信,但事实上整个会话都被攻击者控制。其详细过程。

1) 客户端发送请求到服务端,请求被中间人截获。

2) 服务器向客户端发送公钥。

3) 中间人截获公钥,保留在自己手上。然后自己生成一个【伪造的】公钥,发给客户端。

4) 客户端收到伪造的公钥后,生成加密hash值发给服务器。

5) 中间人获得加密hash值,用自己的私钥解密获得真秘钥。同时生成假的加密hash值,发给服务器。

6 ) 服务器用私钥解密获得假密钥。然后加密数据传输给客户端。

  • 内存泄漏怎么处理的

这里介绍一个工具Valgrind。它是Linux下仿真调试工具的集合。其内核模拟了cpu环境并提供服务给其他工具。这些工具类似插件,辅助完成特定的内存调试任务(自己去装了尝试用用更深刻)。

  1. Valgrind体系结构

Valgrind工具集
  1. 结构详述

插件名称 功能
Memcheck 检测开发中绝大数内存错误使用情况。比如未初始化的内存或者使用已经释放的内存
Callgrind 收集程序运行时数据,简历函数调用关系图
Cachegrind 检查程序中缓存出现的问题,可以给用户提供Cache丢失次数等来方便优化程序
Helgrind 检查多线程程序中的竞争问题
Massif 堆栈分析器。测量程序在堆栈使用了多少内存。
Extension 利用core提供的功能,自己编写特定内存调试工具。
  • Makefile简单介绍下

我们一切的努力都是为了更快的完成工作,出现了Makefile是一样的道理。Makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,其按*类型、功能、模块*分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。后续会说docker的dockerfile也是同样的道理。

(后台回复makefile获取实践手册)

  • gdb调试使用过吗,多线程调试怎么弄

(后台回复gdb领取gdb调试手册)

  • 看你用过大数据框架,介绍介绍(这里推荐一下http://dblab.xmu.edu.cn/)

Apache Spark Apache Flink
核心实现 Scala java
编程接口 Java,Python,R语言,Scala DataSet API支持java、scala和python。DataStream API支持Java和Scala
计算模型 基于数据片集合的微批量处理模型 基于操作符的连续流模型
优缺点 流式处理有延时 支持秒级计算,实时性不好 流式计算与Storm性能相当,支持毫秒级计算 实时性非常好
  • 进程间的通信(第三次遇见)

答出一共有哪几种,优点/缺点是什么,最快又是什么,也可以从一中方式为突破点,从内核角度阐述更为与众不同了!

进程间通信方式 描述
管道pipe 半双工通信方式,数据单向流动,只能在父子进程中使用。
命名管道FIFO 半双工方式,但是允许非父子关系通信
消息队列 大小有限,存放在内核中的链表,建立好好用用ipcs命令。消息队列克服了信号传递信息少、管道只能承载无格式字节流等缺点
共享存储 一块内存,多个进程可以访问,共享内存为最快IPC方式。通过和信号量等来解决进程间的同步问题。
信号量 计数器,控制多个进程对共享资源的访问,不错的同步手段。
信号 通知机制的完美实现,某个进程有事件发生时通知处理。
  • 介绍几个常用的网络程序分析工具(Linux命令)

    网络程序分析工具
命令名称 命令功能 示例
vmstat 实时输出系统各种资源使用情况比如进程信息,内存使用等 vmstat 5 2(每隔5s输出一次结果,一共输出2次)
netstat 网络信息统计工具。 netstat -nat| grep ip:port(查看连接状态)
mpstat 实时监测多处理器系统每个cpu使用情况 mpstat -P ALL 5  3(每隔5s输出一次结果,输出三次)
lsof 列出当前系统打开的文件描述符工具 lsof -c httpd(查看httpd使用了哪些描述符)
tcpdump 网络抓包工具(参考界面的wireshark) tcpdump dst port 12345(抓取进入端口13579的数据包)
nc 快速构建网络连接 nc -C ip+port(连接服务器并发送信息)

4 总结

这次面试同样基本上从简历出发+公司业务特点出发。所以面之前了解了解公司相关业务(一点点也行,说明你是用心的),对自己简历上的东西一定不能弄虚作假。另外请记下以下几点:

  • 公司招你去是干活了,不会因为你怎么怎么的而降低对你的要求标准。

  • 工具上面写代码和手撕代码完全不一样。

  • 珍惜每一次面试机会并学会复盘.

  • 对于应届生主要考察的还是计算机基础知识的掌握,项目要求没有那么高,是自己做的就使劲抠细节,做测试,这样你就知道会遇到什么问题,遇到什么难点,如何解决的。当被问到的时候就可以侃侃而谈了。

  • 非科班也不要怕,怕了你就输了!一定要多尝试。

参考链接:

http://www.redis.cn/

http://kafka.apache.org/

https://www.nowcoder.com/discuss/150059?type=0&order=0&pos=8&page=0

https://zhuanlan.zhihu.com/p/62025258

暖男告知

跟小蓝每天进步一点点,生活就会美一点!

进入高手如云学习交流群,一起成长!

▼[c/c++后台开发面经系列]1 深信服面经[c/c++后台开发面经系列]2 京东面经(含答案)写简历这几点一定要注意!Linux后台开发必看![c/c++后台开发面经系列]3 bigo/映客面经(含答案)点下面“在看”的永远18岁哟~

c++后台开发项目_[c/c++后台开发面经系列]4 Zoom面经(含答案)相关推荐

  1. ​[c/c++后台开发面经系列]4 Zoom面经(含答案)

    嘻嘻,祝小仙女们女神节快乐! 看完别忘点个在看哦 此系列内容以及观点仅个人感受,不妥之处直接私我!目的为了大家能更好的知道面试题难度以及如何准备,希望能让大家少浪费时间寻找资料,多点时间学点干货!因为 ...

  2. c++后台开发项目_在京东,我是怎么做项目管理的

    一个项目的完成,靠的不是一个人的单打独斗,而是团队的集体努力.协调各方不是件易事,项目经理的工作就显得格外重要.如何做好项目管理?本文作者基于自身工作经历,对这个问题提出了自己的一点思考,希望对你有帮 ...

  3. java app后台开发实例_支付宝app-java后台

    @ApiOperation(value= "支付宝预支付", httpMethod= "POST") @PostMapping(value= "/al ...

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

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

  5. 后台开发(1)---app后台开发入门

    app后台开发入门 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_36571185/article/details/70269448 ...

  6. zephir 开发项目_通过Zephir开发PHP扩展的入门

    zephir 开发项目 This tutorial will explain how to create a PHP extension using a new language: Zephir, w ...

  7. c++软件开发面试旋极面试题_腾讯软件开发面试题(有详细解答)

    我大学的时候,就有些博客的习惯.今天翻回去看之前写的博客,觉得有些幼稚,也有些惊喜.比如17 年初写的腾讯软件开发面试题还挺多人阅读评论的,这是我意想不到的,今天也整理一下,发出来给大家看下. 1.已 ...

  8. java 获取文件大小_阿里Java后端开发面经,面试官都替我感到绝望

    点关注,不迷路:持续更新Java相关技术及资讯!!! 内容源于群友投稿!记录一次阿里Java后端开发面经,分享给大家,感谢支持! 前言 秋招面试的第一家公司,也是第一次面试,真的超级紧张,从自我介绍到 ...

  9. c++后台开发项目_5900万!腾讯云中标安徽宿州wecity智慧园区EPC项目(含智慧路灯)...

    注:复制关键字☞宿州智慧园区☜发送至公众号后台可获取详细的招标文件及中标信息 中标情况 1.项目名称:宿州市高新双创智能谷wecity智慧园区EPC项目,项目编号:SZCG2019455 2.成交金额 ...

最新文章

  1. 鱼佬:我的数据挖掘之路!
  2. java -jar 和 -cp详解
  3. Jmeter创建一个点对点的 JMS 测试计划
  4. 设置mac笔记本为固定ip
  5. 大剑无锋之不都说面试不问mybatis,为什么我被虐了。。。【mybatis面试题】
  6. OSPF动态路由协议入门简介
  7. vue+mintUI搭建移动端新闻类网站
  8. [转]将西部数据 My Passport Wireless 移动存储连接到任何支持的云存储上
  9. Ubuntu系统 -- 初始化配置与基础操作
  10. 在中兴新支点操作系统玩换装游戏
  11. Java 设置添加ckeditor图片上传功能
  12. VMware虚拟机安装黑苹果
  13. 极客大学python进阶训练营_极客大学Python进阶训练营新版2.0
  14. CentOS 8 更新/etc/yum.repos.d
  15. 使用scrapy爬取京东产品详细信息
  16. 初学者C语言练习题-入门
  17. 【数据库】聚簇索引与非聚簇索引
  18. CF游戏技巧→永久炫彩昵称
  19. 路由器里面的DHCP是什么功能?
  20. 王者容易怎么开启语音服务器,王者荣耀怎么开语音?王者荣耀语音开启教程

热门文章

  1. activity重启问题
  2. auto_ptr动态分配对象
  3. ijkplayer支持h264
  4. SIC插槽,WSIC插槽,XSIC插槽
  5. 11. 系统信息监控
  6. restful url 设计规范_RESTful API接口设计规范
  7. mysql汉化版不同_Mysql各个版本区别及官网下载
  8. python写表格_使用Python对Excel进行读写操作
  9. python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...
  10. linux之uniq 命令详解