字节跳动C++云原生二面(65min)

news/2024/5/18 19:13:08/文章来源:https://blog.csdn.net/m0_46201544/article/details/127333862

字节跳动C++云原生二面(65min)

面试问题

HTTP1.0 、1.1和2.0 的区别和差异是什么

  • 《HTTP1.0和1.1的区别》
  • HTTP1.1 默认开启长连接(keep-alive) 而HTTP1.0需要添加参数,在一定程度上减少了建立和关闭连接的消耗和延迟
  • HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。
  • HTTP1.0中认为每台服务器只有一个唯一的IP地址,因此请求头中的URL中并没有传递主机名,因此HTTP1.0没有host域,但是HTTP1.1的请求消息必须有host域(host域其实就是一个记录IP和域名的文件,可以加快解析速度)
  • 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  • 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
  • 《HTTP1.1和2.0的区别》
  • HTTP2.0使用多路复用的技术,做到同一个连接并发处理多个请求,并且并发请求的数量也比HTTP1.1大了好几个数量级,要比HTTP1.1多建几个TCP连接的开销更小
  • HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。
  • 支持服务器推送 ,为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在 浏览器明确地请求之前 ,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。
  • HTTP2.0采用二进制格式传输数据

WebSocket 也是基于Http协议的对吧

WebSocket在建立连接的时候是使用的HTTP协议,建立连接之后就是自己的WebSocket协议了

HTTPS有用到过吗,HTTPS在数据传输的过程中是对称加密还是非对称加密

HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段

整体过程分为:证书验证数据传输 阶段

img

证书验证的时候会拿公钥做什么事情

会将公钥去加密由一个权威服务器生成的一个随机数字,然后再发送给服务器端,服务器端通过私钥解密随机数,然后服务器通过客户端传入的随机数进行构造对称加密算法,对返回结果内容进行对称加密后传输给客户端

为什么数据传输是用的对称加密

  • 非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的
  • 在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。

孤儿进程和僵尸进程简单介绍一下

  • 僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。(也就是子进程的退出状态不被收集)。
  • 父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”,此时子进程就叫做孤儿进程。
    Linux避免系统存在过多孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。
    Pid==1,init进程(初始化进程)

孤儿进程和僵尸线程怎么去避免呢

  • 《僵尸进程处理》
  • 其实在子进程退出的时候内核会发送SIGCHLD信号给父进程,我们可以捕捉SIGCHLD信号,然后在信号函数中回收子进程,即调用wait

线程之间是怎么同步的,一般有哪些方式

  • 信号量:为控制一个具有有限数量用户资源而设计
  • 互斥量:为协调共同对一个共享资源的单独访问而设计的
  • 读写锁
  • 条件变量
  • 文件互斥

详情参考此文:https://zhuanlan.zhihu.com/p/514079587

进程什么时候是在内核态什么时候是在用户态,怎么做一个切换的

从用户态到内核态的转变,需要通过系统调用来完成。比如,当我们查看文件内容时,就需要多次系统调用来完成:首先调用 open() 打开文件,然后调用 read() 读取文件内容,并调用 write() 将内容写到标准输出,最后再调用 close() 关闭文件。

系统调用会将CPU从用户态切换到核心态,以便 CPU 访问受到保护的内核内存。

系统调用的过程会发生 CPU 上下文的切换,CPU 寄存器里原来用户态的指令位置,需要先保存起来。接着,为了执行内核态代码,CPU 寄存器需要更新为内核态指令的新位置。最后才是跳转到内核态运行内核任务。

而系统调用结束后,CPU 寄存器需要恢复原来保存的用户态,然后再切换到用户空间,继续运行进程。所以,一次系统调用的过程,其实是发生了两次 CPU 上下文切换。

注意:系统调用过程中,并不会涉及到虚拟内存等进程用户态的资源,也不会切换进程。

系统调用过程通常称为特权模式切换,而不是进程上下文切换。

详情参考此文:https://www.cnblogs.com/tsaiccj/p/15762258.html

死锁你是怎么理解的,什么情况会产生死锁

读写锁这一块你有用过吗,简单介绍一下

平常项目里面也没涉及到读写锁对吧

爬虫这一块,爬数据的时候是并发做爬取的吗,讲一下你的思路,还有你的数据是存储在哪里的?

这个项目是你单独去做的吗?看你投入了一年的时间,当时是出于什么考虑来做这一块呢?你在做的过程中有碰到过比较大的难点吗,比如真正去做一些实现的时候遇到过什么棘手的吗

刚才提到你自学了 python ,你来介绍一下Python中的闭包

你自己比较擅长哪个语言呢

你对云原生感兴趣,那么Golang有尝试去做过一些学习吗

数据库这一块你了解的多吗,比如像MYSQL,包括像一些关联查询,一些高级的SQL语句什么的,还有索引什么的

比如数据量比较大的情况,比如说你朋友发现我某一个SQL执行的时候比较慢,你觉得如果他执行比较慢的,可能有哪些原因?你怎么去排查定位呢?

索引的回表的操作一般在什么情况发生

volatile这样的关键字的作用是干什么的

你平常和同学做项目的合作过程中你是怎么去写作的,怎么分工的或者是做一个拆解的,谁去做这个事儿

因为你涉及到一些比如参加一些比赛的话,比赛是有人去主导,比如说一些比如参会,你们是主动自己去参加的吗

如果你过来实习的话,比如说给你一个比如说任务或者一个方向,但这一块相对来说又自己比较陌生,你一般会怎么去做?

你有关注哪些云原生的方向或者项目吗?K8s这一块的话有了解过吗?

代码

在这里插入图片描述

想了2min,给了一个 N3N^3N3 的思路,先预处理前缀和面积,然后枚举正方形的左上角,以及边长

实现后,面试官问我能不能用动态规划做,当时感觉是可以的,然后想了10min,用 dp[i][j]dp[i][j]dp[i][j] 表示 (i,j)(i,j)(i,j) 点作为正方形的右下角的点的最大正方形的长度 ,发现规律如果左上角三个正方形的面积相等,而面积相等就等价于边长相等就恰巧是我们的 dpdpdp 状态,那么就能合成更大的一个正方形

dp[i][j]=dp[i−1][j−1]+1dp[i][j] = dp[i-1][j-1] + 1dp[i][j]=dp[i1][j1]+1

如果不相等的话,那么就是从三个正方形中选一个最小的加一来合成

dp[i][j]=min(dp[i−1][j−1],min(dp[i−1][j],dp[i][j−1]))+1dp[i][j] = min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1])) + 1dp[i][j]=min(dp[i1][j1],min(dp[i1][j],dp[i][j1]))+1

当时脑子有点昏,不相等我就直接让他等于 111 了,面试官说有事,我的思路没问题,细节还需要注意下,然后就run了,现在想来真就差一点

#include<bits/stdc++.h>
using namespace std;
#define N 500
int dp[N][N];
int n,m;
vector<char> matrix[N];
int main()
{cin>>n>>m;for(int i = 0;i < n; ++i) for(int j = 0;j < m; ++j) cin>>matrix[i][j];memset(dp,0,sizeof dp);int ans = 0;for(int i = 0;i < n; ++i) {for(int j = 0;j < m; ++j) {if(matrix[i][j] == '1') {if(dp[i][j] == dp[i][j+1] && dp[i][j] == dp[i+1][j] && dp[i][j+1] == dp[i+1][j])dp[i + 1][j + 1] = dp[i][j] + 1;elsedp[i + 1][j + 1] = min(dp[i][j],min(dp[i+1][j],dp[i][j+1])) + 1;}ans = max(ans,dp[i+1][j+1]);}}pritnf("%d\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_23965.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AntDesign-Vue Table 查询与分页

前言 之前的增删改查小 Demo 已经快要进行到最后一步了,这节的任务是将请求数据的方式改为 分页,并且增加 分页条件查询 的功能。 页面布局 <a-table:data-source="dataSource":columns="columns":pagination="pagination" > <!-- ↑…

02 docker安装

这里写目录标题CenterOS安装使用远程镜像仓库安装设置yum远程仓库第二步&#xff1a;安装docker安装第三步&#xff1a;docker镜像加速器debian/Ubuntu安装docker官网&#xff1a;https://www.docker.com/ docker镜像库&#xff1a;https://hub.docker.com/ Docker CE&#xf…

truffle安装问题-无法加载文件

在powershell 下输入以下命令 set-executionpolicy remotesigned问题解决搜索 复制

【C语言】文件版本通讯录

文章目录文件版本通讯录一、test.c&#xff08;通讯录主干&#xff09;1.通讯录菜单的实现2.创建通讯录&#xff0c;初始化通讯录3.通讯录功能的调用二、contact.c(函数的实现)1.通讯录初始化2.查看联系人是否存在函数实现3.单个修改联系人各项的信息函数实现4.修改联系人信息目…

【PyTorch深度学习项目实战100例】—— 基于Transformer实现Twitter文本隐喻二分类 | 第43例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

[Vue] TodoList 案例

前言 系列文章目录&#xff1a; [Vue]目录 老师的课件笔记&#xff0c;不含视频 https://www.aliyundrive.com/s/B8sDe5u56BU 笔记在线版&#xff1a; https://note.youdao.com/s/5vP46EPC 视频&#xff1a;尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 文章目录前言1. 组件…

《uni-app》一个非canvas的飞机对战小游戏实现-敌机模型实现

这是一个没有套路的前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e;接下来的几篇都是uni-app的小实战&#xff0c;有助于我们更好的去学习u…

行业大洗牌,软件测试饱和了?到底怎样才能走出职场困境......

人生三大emo瞬间&#xff1a;工作不顺&#xff0c;薪资不涨&#xff0c;求职被拒。 都说成年人的世界里没有容易二字&#xff0c;这句话在职场里体现地淋漓尽致&#xff1a; 工作5年&#xff0c;还没来得及升职&#xff0c;薪资被倒挂&#xff0c;岗位被优化&#xff1b;晚上…

无代码 AI 概览(Levity)

介绍 在构建我们自己的平台时&#xff0c;我们一直密切关注无代码 AI 领域。 我们意识到非技术人员构建定制的人工智能解决方案和人工智能驱动的流程自动化是多么困难。 虽然无代码市场作为一个整体正在成熟&#xff08;Dreamweaver 和 MS Frontpage&#xff0c;最早的 WYSIWYG…

开源在线客服系统源码(支持PC/H5/公众号/小程序)基于golang的网页在线客服系统

近年来市面上出现了越来越多的在线客服系统,还不断有新的在线客服企业加入,这让刚接触在线客服系统的人挑得眼花缭乱,那到底应该怎么选择一个适合企业使用的在线客服系统呢 我先给大家介绍下在线客服发展的历史,然后介绍下客服系统都有哪些功能,最后我们根据各类条件来筛选…

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

24. 两两交换链表中的节点 本题是一道模拟过程的题目。搞清楚两两交换的步骤之后,写出对应的代码也就不是难题了。不过在学习题解的过程中发现,两两交换的步骤也有很多种实现方式。自己在做题目的时候使用的思路如下:进行两两交换之前,设置三个指针,分别指向dummy,head和…

记录一下java生产环境CPU占用过高实例

背景&#xff1a;今天还是像往常一样下班后坐公交车回家&#xff0c;突然工作微信群里发来一个截图&#xff0c;我点开一看是我之前上线的服务占用CPU过高了导致程序直接卡死。记录分享一下我的解决思路希望可以帮到你们。 目录 1. top【先查看监控里每个逻辑cpu情况】 2. jm…

python题库刷题训练软件

未来教育 全国计算机等级考试 (qq.com)https://mp.weixin.qq.com/s?__bizMzkyNjQwODc2MA&mid2247483676&idx1&sn96daf350e5cb0542bbab621cbc8434b5&chksmc236884bf541015d868736e488791c4c90c06eb04339fb3923f02fc36fc5732b248f176c9bcd#rd 1、下列叙述中正确…

Linux/Ubuntu高级命令(二)

一、获取管理员权限相关命令 sudo命令 sudo&#xff1a;以管理员权限执行某个命令可以在命令前加上sudo&#xff0c;用于单次临时操作sudo -s&#xff1a;切换到root用户&#xff0c;获取管理员权限&#xff0c;用于大量操作whoami&#xff1a;查看当前用户exit&#xff1a;退…

【PostgreSQL】Linux离线安装psql

文章目录一、前言二、查询postgre版本三、查询服务器信息四、下载对应的安装包五、解压与设置环境变量六、验证一、前言 psql命令行交互式客户端工具。PostgreSQL、Greenplum都可以使用psql命令导入数据。 二、查询postgre版本 在客户端执行SQL查询版本信息 select version…

德州仪器的繁荣周期仍在继续

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 影响德州仪器的半导体周期 从表面上看&#xff0c;半导体行业是一个很好的行业&#xff0c;随着技术的进步&#xff0c;将需要越来越多的半导体和芯片。此外&#xff0c;德州仪器&#xff08;TXN&#xff09;是一家稳定的公…

第二章 prometheus部署

说明&#xff1a;prometheus有很多部署方式&#xff0c;例如&#xff1a;宿主机二进制、docker&#xff0c;k8s平台&#xff0c;operater&#xff0c;本次先采用宿主机二进制部署&#xff0c;复习下prometheus的工作流程、配置&#xff0c;然后逐步使用k8s平台进行部署&#xf…

【SSM】Spring MVC 程序开发(重点:SpringMVC 工作流程)

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍SpringMVC 工作流程、Spring MVC的主要组件、Spring MVC 如何连接、如何获取参数、如何输出数据的。 后续会继续分享MyBatis、Spring AOP及其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&…

如何压缩图片?我只告诉你这几个靠谱的方法

现在随着技术的发展&#xff0c;很多图片、文件都是以电子版存档&#xff0c;在查找和使用方面上&#xff0c;大大提高了我们工作效率。不够有的时候&#xff0c;因为存储空间有限&#xff0c;我们有时上传不了照片&#xff0c;只能压缩照片来节省更多的空间保存照片。那你们知…

Kubernetes——KubeSphere构建mysql集群

摘要 利用kubeSphere构建mysql的主从集群&#xff0c;同时测试主从集群结构部署成功。 一、配置Secret资源 1.1 配置mysql master slave的Secret资源 yaml kind: Secret apiVersion: v1 metadata:name: mysql-cluster-secretnamespace: athena-mallannotations:kubesphere.…