2021-12-22面经摘录(字节飞书后端实习一面)

简介: 来自 字节飞书后端实习一面

面经原文和解答
40min
自己介绍

操作系统

1.进程和线程的概念?
进程是指一次程序运行的过程,线程是进程中执行运算的最小的单位,是进程中的一个实体。
进程是cpu资源分配的最小单位,线程是cpu调度执行的最小单位,一个进程至少包含一个线程,进程与进程相互隔离互不影响,同一个进程内的线程共享进程资源,一个线程崩溃可能导致进程崩溃,但进程崩溃不会导致其他正在运行的进程崩溃

2.为什么进程上下文切换慢?
进程切换分为切换页目录以使用新的地址空间,切换内核栈和硬件上下文。线程上下文切换不需要切换虚拟内存空间,所以相对切换较快;

3.什么时候用多线程
多线程的使用主要是用来处理程序“在一部分上会阻塞”,“在另一部分上需要持续运行”的场合。多线程提高效率主要原因是多CPU和IO等待,多个CPU使得可以同时执行多个任务,每个线程相当于一个任务;

4.如果多个线程同时修改一个变量怎么办?
可通过加锁的方式,保证变量修改符合预期。

5.你了解哪些锁?
公平和非公平锁,可重入锁,自旋锁,独占锁(写锁),共享锁(读锁)

6.如何实现一个读写锁?
java-读写锁的实现原理

计网

1.syn的含义
同步序列编号

2.为什么要随机产生seq
出于网络安全的因素着想,防止伪造序列号进行攻击

3.SYN泛洪攻击
SYN泛洪攻击

4.http传输过程
1.建立TCP连接
2.Web浏览器向Web服务器发送请求命令
3.Web浏览器发送请求头信息,提交请求体。
4.Web服务器应答
5.Web服务器发送应答头信息
6.Web服务器向浏览器发送数据
7.Web服务器关闭TCP连接

5.7层结构,应用层有哪些协议
应用层:HTTP,FTP,SNMP
表示层,会话层,传输层,网络层,数据链路层,物理层

6. tcp有哪些可靠手段
1.将数据截断为合理的长度
2.超时重发
3.对于收到的请求,给出确认响应
4.校验出包有错,丢弃报文段,不给出响应。
5.对失序数据进行重排序,然后交给应用层
6.丢弃重复数据
7.TCP提供流量控制

7. 丢包了怎么办
对Send发送失败进行处理,常用解决方法有拆包、加包头、发送组合包。(在网上没有找到具体解释)

8.什么时候会产生ack冗余
报文乱序和丢包造成的

MySQL

1.索引知道吗?为什么索引能够查询的快?
索引是帮助mysql高效获取数据的数据结构;
InnoDB的索引结构为矮胖的B+树,可以很快地找到索引对应的数据

2.B+树结构是什么样的
n叉B+树
(1)B+树一个节点最多含有n个key
(2)B+树叶子节点保留所有key的信息,依照key大小排序
(3)所有非叶子节点看做key的索引
(4)数据对象的插入和删除仅仅在叶子节点进行

3.为什么叶子节点用到链表
使用范围查找的时候,只要找到那个边界值就可以通过指针去查找其他所需要的数据就不用再从根结点开始遍历,减少了所消耗的时间,增加了效率.

4.事务知道吗?acid什么含义
事务是逻辑上的一组操作,要么都执行,要么都不执行;
数据库事务可以保证多个对数据库的操作构成逻辑上的整体,要么全部执行成功,要么全部不执行。
原子性(Atomicity) : 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
一致性(Consistency): 执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的;
隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

5.原子性怎么实现的
undo log称之为回滚日志,每条数据的变化(insert/update/delete)都会产生一条记录,并且日志持久化到磁盘,undo log用来记录数据修改前的信息,比如说要插入一条记录,那么undo log就会记录一条删除该信息的语句,这样你需要回滚的时候那么undo log就会执行删除你之前插入的那条记录,达到没有修改前的状态,更新一个记录也会生成一条sql记录你更新前的字段状态,从而实现了原子性。

6.持久性怎么实现的
redo log叫重做日志,当事务提交的时候会把所有的修改信息存放在redo log中,并且会把redo log持久化到磁盘,当电脑重启后就会重新执行redo log的修改信息来恢复数据,这样就能够达到持久化的目的。

编程题

topK问题
topK问题

相关文章
|
9月前
|
负载均衡 前端开发 Java
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
459 0
|
算法 Java 关系型数据库
限时开放!涵盖2023年大厂后端全套考点-字节后端面试上岸手册香
今年这情况,真心建议所有 Java 后端不要随便被“行情差洗脑”! 目前职友集上搜到的 java 岗位仍有22万+,招聘需求相比其他行业不算少!
|
存储 域名解析 负载均衡
【题解】结营小测试全解析:第六届字节后端青训营
小伙伴们!快来看看结营解析答案,验证一下自己是不是前百分之七十吧!这部分都是根据个人经验和网上收集所得到的第六届青训营结营全解析,如果存在错误,也请在评论区友好讨论,让我们一起把这篇文章变得更加完美。
288 0
|
2月前
|
存储 缓存 负载均衡
后端开发中的性能优化策略
本文将探讨几种常见的后端性能优化策略,包括代码层面的优化、数据库查询优化、缓存机制的应用以及负载均衡的实现。通过这些方法,开发者可以显著提升系统的响应速度和处理能力,从而提供更好的用户体验。
87 6
|
24天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
43 2
|
2月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
2月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
160 3
|
3月前
|
存储 缓存 监控
后端开发中的缓存机制:深度解析与最佳实践####
本文深入探讨了后端开发中不可或缺的一环——缓存机制,旨在为读者提供一份详尽的指南,涵盖缓存的基本原理、常见类型(如内存缓存、磁盘缓存、分布式缓存等)、主流技术选型(Redis、Memcached、Ehcache等),以及在实际项目中如何根据业务需求设计并实施高效的缓存策略。不同于常规摘要的概述性质,本摘要直接点明文章将围绕“深度解析”与“最佳实践”两大核心展开,既适合初学者构建基础认知框架,也为有经验的开发者提供优化建议与实战技巧。 ####
|
2月前
|
存储 前端开发 Java
深入理解后端开发:从基础到高级
本文将带你走进后端开发的神秘世界,从基础概念到高级应用,一步步揭示后端开发的全貌。我们将通过代码示例,让你更好地理解和掌握后端开发的核心技能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和启示。
120 6
|
2月前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####

热门文章

最新文章