No.6 腾讯,阿里,字节,优科面经(下-网络,数据库篇)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: No.6 腾讯,阿里,字节,优科面经(下-网络,数据库篇)

(tips:天翼云研发三部二面是一个光头领导,20分钟左右,问了如下问题)

640.png


网络篇

1.HTTP协议1.0和2.0的区别是啥?是哪一层的协议?


总的区别就是:1.HTTP/2采用二进制格式而非文本格式。2.HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行。3.使用报头压缩,HTTP/2降低了开销。4.HTTP/2让服务器可以将响应主动“推送”到客户端缓存中

2. 同步IO和异步IO的区别?


同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件事做完了才能做下一件事。

异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

3.网络层有哪些协议?应用?

网络层有四个协议:ARP协议,IP协议,ICMP协议,IGMP协议。ARP协议为IP协议提供服务,IP协议为ICMP协议提供服务,ICMP协议为IGMP协议提供服务。


ARP协议应用:根据目的IP地址来解析MAC地址,进行二层通讯。


IP协议应用:IP协议是一个用于网络之间互连的协议。IP是Internet Protocol(网际互连协议)的缩写,设计IP的目的是提高网络的可扩展性;IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。


ICMP协议应用:ICMP协议主要用来检测网络通信故障和实现链路追踪,最典型的应用就是Ping和traceroute。


IGMP协议应用:作用1:IGMP用来在接收者主机和直接相邻的组播路由器之间建立和维护组播组成员的关系。作用2:IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。


4. awk命令知道干啥的不?

   awk是一种处理文本文件的语言,是一个强大的文本分析工具。三剑客功能:grep :过滤文本、sed : 修改文本、awk : 处理文本


5. linux系统中查看系统资源用啥命令?

vmstat、dmesg、free、uptime、uname、lsb_release、lsof、top等这些命令可以查一下他们的作用。



6.HTTP与HTTPS的区别?端口有何不同?

    HTTP协议以明文方式发送内容不提供任何方式的数据加密HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。https则是具有安全性的ssl加密传输协议。http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443并且https协议需要到ca申请证书HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

数据库相关

1.mysql的事务隔离机制

(tips:字节跳动飞书人力套件面试官问了这个问题,mysql是业务代码考核的重点。
mysql的四大特性分别是:原子性,一致性,隔离性和数据持久化。)


原子性:事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

一致性:事务开始前和结束后,数据库的完整性约束没有被破坏

隔离性:个事务的执行不能被其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久化:指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。


mysql四大隔离级别

读未提交(READ UNCOMMITTED )、

读提交( READ COMMITTED)、

可重复读(REPEATABLE READ)、

串行化(SERIALIZABLE)


2.Redis的key删除策略有哪些?

策略一:被动删除
当读/写一个key时,redis首先会检查这个key是否存在,如果存在且已过期,则直接删除这个key并返回nil给客户端。


策略二:定期删除

redis中有一系列的定期任务(serverCron),这些任务每隔一段时间就会运行一次,其中就包含清理过期key的任务,运行频率由配置文件中的hz参数来控制,取值范围1~500,默认是10,代表每秒运行10次。


策略三:强制删除

如果redis使用的内存已经达到maxmemory配置的值时,会触发强制清理策略,清理策略由配置文件的maxmemory-policy参数来控制。


3.Redis的基本数据结构

要包括常见的5种数据类型,分别是:String、List、Set、Zset、Hash。


4.有了mysql为啥还用etcd优势在哪些地方?

我觉得有必要回答一下。这个问题其实并不简单,因为本质原因涉及到分布式系统的特性。


MySQL 只保证最终一致性 eventual consistency(而且是不可配置的),因为它采用的是异步复制 asynchronous replication,系统中有过读写分离经验的同学知道当你写入数据库后立刻去读如果命中的 slave 节点没有同步到最新数据,那么返回的可能是空数据。虽然一个节点可能落后,但保证最终一致性意味着,除非网络错误或其他一些问题,否则任何落后的节点最终都会赶上其他节点,并且所有节点最终都会获得一致的视图。但是分布式系统中的一致性要求每个节点在给定时间具有相同的数据视图,这非常重要。MySQL 存储的可以是大量内容数据或者业务数据,而 Kubernetes 这些服务存储的是控制平面的数据,后者数量级少一些但是要求强一致性。

etcd KV API guarantees


etcd tries to ensure the strongest consistency and durability guarantees for a distributed system. 
etcd ensures  strict serializability, which is the strongest isolation guarantee of distributed transactional database systems. Read operations will never observe any intermediate data. 
etcd ensures  linearizability as consistency of replicas basically. As described below, exceptions are watch operations and read operations which explicitly specifies serializable option. 


1.etcd 试图提供最强的一致性和持久性的保证,确保严格的可串行化 strict serializability,这是分布式事务数据库系统的最强隔离保证,读取操作永远不会观察任何中间数据。


Cassandra ScyllaDB MySQL 完全不在竞争之列,因为它们只是最终一致性。大多数 MVCC 的数据库都几乎不适用于强一致的场景

2.etcd 的定位符合场景


官方网站中写的“一个为分布式系统中极为重要的数据提供分布式可靠的 kv 存储”。通常不会是一些内容数据比如文本信息,更多的存储一些不经常更新状态的相对少量几个G左右的控制数据。


3.云原生场景适用。

天翼云笔试

天翼云笔试分3个模块。耗时还是比较久的,可能都做下来要几个小时。

1.性格测评

       这部分符合社会主义核心价值观就行,其余的随意发挥。选择题。

2.智力测验

  也是选择题,有给你一段话,让你选出哪一句是对的。图形推理题,数据推理题。类似于公务员考试,时间很紧张,可能出现看不完题目,来不及算就过去了,那么就蒙一个就行,不影响最后结果。

3.专业笔试


Tips:60道选择题,还有4-5道简答题。主要考察golang的相关知识,发现了一个押题率60%的文档,大家自己悄咪咪看就好。

goLang 精编 选择、填空、判断 共100题_戴国进的博客-CSDN博客_golang精编100题


简答题考了:

1. golang控制并发怎么做?让你写一段程序

2. 怎样处理连接2个字符串。

3. golang中正则表达式过滤字符串的用法。


其他问题


1.说下死锁,怎样打破?


一组进程中,每个进程都无限等待被该组进程中的另一进程所占有的资源,因而永远无法得到资源,这种现象称为进程死锁,这一组进程就称为死锁进程。死锁会导致大量资源浪费。


互斥使用(资源独占):一个资源每次只能给一个进程使用。

占有且等待(请求和保持):进程在申请新的资源的同时保持对原有资源的占有。

不可抢占:资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放

循环等待:存在一个进程等待队列P1,P2,…Pn,其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1的资源,形成一个等待环路。


四个条件打破一个就能避免死锁。


2.CAP原则,redis集群满足CA还是CP?


     天翼云一面问了,首先带领大家了解一下,CAP原则又叫CAP定理,是指在分布式系统中,数据一致性,可用性,分区容错性这3个要素最终只能同时满足两点,不可能三者兼顾。
   Base理论的官方解释为:
BASE理论是对CAP中的一致性和可用性的一个权衡的结果,其核心的思想是我们既然无法做到强一致,但每个应用可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

redis集群满足AP
AP :对一致性要求不高,但仍需保证最终一致性
eg :redis分布式集群,(大多数网站采用,因为可用性很影响用户体验)

3. 说下go的优点缺点,最近学哪些新技术?

(tips:kata的面试官问了这个问题,属于开放式的问题,我就说了几个重点.)

优点

① 高性能-协程

golang 源码级别支持协程,实现简单;对比进程和线程,协程占用资源少,能够简洁高效地处理高并发问题。

②  生态

背靠谷歌,生态丰富,轻松 go get 获取各种高质量轮子。用户可以专注于业务逻辑,避免重复造轮子。

③  部署

部署简单,源码编译成执行文件后,可以直接运行,减少了对其它插件依赖。不像其它语言,执行文件依赖各种插件,各种库,研发机器运行正常,部署到生产环境,死活跑不起来 。

④  跨平台

很多语言都支持跨平台,把这个优点单独拿出来,貌似没有什么值得称道的,但是结合上述优点,它的综合能力就非常强了。

⑤  代码极简

个人认为 golang 是 C / C++ / python 的结合体,它是一门全新的语言,入门和使用相对简单,是性能和代码极简之间的一种平衡。

缺点

①右大括号不允许换行,否则编译报错

②不允许有未使用的包或变量

③错误处理原始,虽然引入了defer、panic、recover处理出错后的逻辑,函数可以返回多个值,但基本依靠返回错误是否为空来判断函数是否执行成功,if err != nil语句较多,比较繁琐,程序没有java美观。(官方解释:提供了多个返回值,处理错误方便,如加入异常机制会要求记住一些常见异常,例如IOException,go的错误Error类型较统一方便)

④[]interface{}不支持下标操作

⑤struct没有构造和析构,一些资源申请和释放动作不太方便

⑥仍然保留C/C++的指针操作,取地址&,取值*
学习哪些新技术:Rust


4.学习k8s都看哪些资料?


阿里二面问了这个问题,开放式的问题,社区,官网,kubernetes.io,kubevirt.io等。

简历如何修改增加过筛率


①简历的每一个字都要字斟句酌,比方说Java不是JAVA,这种细节要注意。建议至少花个3天时间好好修改简历。

②熟悉xxx直接改为精通XXX,不要怕面试官diss,即使挂了,学习一下,把他搞会就行了。


参考文章

[1] kube-apiserver 的设计与实现 · 田飞雨

[2]爆肝整理的Golang面试题,拿走不谢 - 知乎

[3]MySQL 精选 60 道面试题(含答案)_小虾米啊的博客-CSDN博客_mysql面试题

[4]后Kubernetes时代的虚拟机管理技术之kubevirt篇

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
26天前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
26 1
|
1月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
468 2
|
3月前
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
【阿里规约】阿里开发手册解读——数据库和ORM篇
|
3月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
200 5
|
5月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络的步态识别matlab仿真,数据库采用CASIA库
**核心程序**: 完整版代码附中文注释,确保清晰理解。 **理论概述**: 利用CNN从视频中学习步态时空特征。 **系统框架**: 1. 数据预处理 2. CNN特征提取 3. 构建CNN模型 4. 训练与优化 5. 识别测试 **CNN原理**: 卷积、池化、激活功能强大特征学习。 **CASIA数据库**: 高质量数据集促进模型鲁棒性。 **结论**: CNN驱动的步态识别展现高精度,潜力巨大,适用于监控和安全领域。
|
4月前
|
达摩院 供应链 JavaScript
网络流问题--仓储物流调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文通过使用MindOpt工具优化仓储物流调度问题,旨在提高物流效率并降低成本。首先,通过考虑供需匹配、运输时间与距离、车辆容量、仓库储存能力等因素构建案例场景。接着,利用数学规划方法,包括线性规划和网络流问题,来建立模型。在网络流问题中,通过定义节点(资源)和边(资源间的关系),确保流量守恒和容量限制条件下找到最优解。文中还详细介绍了MindOpt Studio云建模平台和MindOpt APL建模语言的应用,并通过实例展示了如何声明集合、参数、变量、目标函数及约束条件,并最终解析了求解结果。通过这些步骤,实现了在满足各仓库需求的同时最小化运输成本的目标。
|
5月前
|
达摩院 安全 调度
网络流问题--交通调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文探讨了如何利用数学规划工具MindOpt解决交通调度问题。交通调度涉及网络流分析,考虑道路容量、车辆限制、路径选择等因素,以实现高效运行。通过建立数学模型,利用MindOpt云平台和建模语言MAPL,设定流量最大化目标并确保流量守恒,解决实际的调度问题。案例展示了如何分配车辆从起点到终点,同时满足道路容量约束。MindOpt Studio提供在线开发环境,支持模型构建和求解,帮助优化大规模交通调度。
|
6月前
|
SQL 安全 数据库连接
sql如何访问网络数据库
访问网络数据库(通常指的是不在本地计算机上而是在网络上的数据库服务器)的SQL操作,其实与访问本地数据库在SQL语句的编写上并没有太大差异。主要的区别在于连接的设置和配置,以及如何确保网络连接的安全性
|
5月前
|
网络协议 安全 网络安全
软考中级之数据库系统工程师笔记总结(五)网络基础
软考中级之数据库系统工程师笔记总结(五)网络基础
43 0
|
7月前
|
应用服务中间件 网络安全 数据安全/隐私保护
Sqlmap参数设置_sqlmap怎么指定参数(1),阿里面试100%会问到的网络安全
Sqlmap参数设置_sqlmap怎么指定参数(1),阿里面试100%会问到的网络安全