当前位置: 首页 > news >正文

字节一面:后端开发

前言

这是我字节一面的回忆录,可能有些不全。

由于博主是Java面试Go岗,操作系统和计网问的还是比较多。

个人感觉字节很喜欢追问,博主被追问拷打的找不到北了,总结还是学的太浅了。

面试官给我的建议:再更深挖一些。

如果感觉对你有帮助,请点点关注点点赞吧,谢谢你!

1 八股

1.1 操作系统

线程和进程讲解

线程如何通信(区分进程的通信)

线程通信

  进程通信

虚拟地址如何找到物理地址

1.2 计算机网络

IP报文组成(格式)(区分TCP和UDP报文)

IP报文(最后其实还有数据)(下面展示的是头部信息)

TCP头部格式

UDP头部

子网掩码的作用(举例说明)(有待补充,我有点忘了,去学习一下在补充)

子网掩码不能单独存在,它必须结合IP地址一起使用。IP地址我们都知道是计算机在网络内的唯一标识,而子网掩码顾名思义是用于划分子网的。

子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。

tcp的可靠性(我当时回答的三次握手和四次挥手的实现方式)

四次挥手为什么一定是四次(其实就是中间两次挥手能不能合一)

1.3 Java相关内容

我的另外的博客要细致一些

Java集合相关面试题-CSDN博客

JVM相关面试题-CSDN博客

Java后端线程面试笔记-CSDN博客

volatile关键字的作用(追问:为什么可以实现线程间的可见性)

泛型的作用 (追问:除了通用之外还有其他的作用嘛)

其他作用

synchronized关键字的作用 (追问:可以重入嘛)

更细致的看:Java后端线程面试笔记-CSDN博客   的2.1部分

重量级不可以,在轻量级和偏向锁里面都可以重入

注解的工作原理 (追问:编译时生效嘛)

Java中的注解(Annotation)是一种为代码添加元数据的机制,本身不会直接影响代码逻辑,但可以通过特定的处理工具(如编译器、框架或自定义处理器)来触发行为。以下是其工作原理的详细说明:

多线程开发如何实现

创建线程的方法:四种

Java后端线程面试笔记-CSDN博客 1.3、3

讲一下多态

1.4 数据库

 常用的redis的数据结构  (追问:底层实现:String的底层)

大厂面试-redis-CSDN博客

追问:底层实现:String的底层

redis的原子性如何实现(追问:可以回滚嘛,多条redis如何实现原子性,可以回滚嘛)

单条命令的原子性

可以回滚吗:不可以
多条redis如何实现原子性

可以回滚,如果内部命令执行失败就会回滚

但是在Lua里面要先预判可以成功吗,预判失败直接不执行

如果Lua在执行中某个命令失败了,那么成功的不能回滚,失败的不在执行

mysql事务的四大特征

大厂面试:MySQL篇_mysql 大厂面试题-CSDN博客

2. 算法题

2.1 k等分多边形

题目描述(数据不是很记得了)

给定一个固定的多边形,给定坐标,多边形数据如下:

现在输入k,将多边形边长分成等长的k段

求出k1到k8的坐标

思路

0.求出多边形周长len

1.找到每个点分的长度:例如第二个点就是:length=(len/k)*(i-1)

2.从第一个(T1)点出发,往下个点走:例如 T1-t2

3.如果|T1-T2|>=length,说明这个点在这条直线上,直接可以求出 坐标

4.如果|T1-T2|<length,说明这个点不在在这条直线上,length-=|T1-T2|,在往下一个点走T2-T3

5.重复2-4,但是为啥补找到上一个分界点,往下走呢,有精度损失。

例子

输入:13

输出

代码

import java.util.Scanner;public class Main {public static void main(String[] args) {//多边形点的坐标,把第一个点还要加入最后,方便计算double[][] T={{10,20},{20,20},{20,30},{40,30},{40,20},{50,20},{50,5},{10,5},{10,20}};//计算多边形的边长,初始化节点double len=0;Node[] nodes=new Node[T.length-1];for (int i = 0; i < T.length-1; i++) {int index=T[i][0]==T[i+1][0]?1:0;nodes[i]=new Node(T[i][0],T[i][1],index==1?'y':'x',T[i][index]>T[i+1][index]?'-':'+',Math.abs(T[i][index]-T[i+1][index]));len+=nodes[i].len;}//输入KScanner in=new Scanner(System.in);int k=in.nextInt();double kLen=len/k;//计算每一份for(int i=1;i<=k;i++){//每个点离起点T1的位置double length=kLen*(i-1);double x=0,y=0;//记录每个分界点的坐标for(int j=0;j<nodes.length;j++){if(nodes[j].len>=length){//在这条线上if(nodes[j].c=='x'){x=nodes[j].x+(nodes[j].d=='+'?length:-length);y=nodes[j].y;}else{x=nodes[j].x;y=nodes[j].y+(nodes[j].d=='+'?length:-length);}break;}else{length-=nodes[j].len;}}System.out.println("K"+i+"("+x+","+y+")");}}
}
class Node{public double x;public double y;public char c;// 'x'  'y'public char d;//+,-public double len;//与下个节点的长度public Node() {}public Node(double x, double y, char c, char d, double len) {this.x = x;this.y = y;this.c = c;this.d = d;this.len = len;}
}

相关文章:

  • 卡洛诗西餐的文化破圈之路
  • 3.2/Q2,Charls最新文章解读
  • SARSA 算法详解:python从零实现
  • TDA4VM SDK J721E (RTOS/Linux) bootloaders梳理笔记
  • 51c嵌入式~单片机~合集9
  • Calculus on Computational Graphs: Backpropagation
  • VB.net序列化和反序列化的使用方法和实用场景
  • xray-poc编写示例
  • Java 泛型参数问题:‘ResponseData.this‘ cannot be referenced from a static contex
  • GoogleTest:简单示例及ASSERT/EXPECT说明
  • 【编译原理】第四章 习题
  • pandas读取Excel数据(.xlsx和.xls)到treeview
  • 传感器的精度,灵敏度等概念介绍
  • terraform实现本地加密与解密
  • vue3内置组件Suspense的使用
  • 在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
  • Nginx 核心功能02
  • WGCLOUD使用 - 如何监控RabbitMQ运行参数
  • Python10天冲刺-设计模型之策略模式
  • 机器学习经典算法:用决策树原理优化新能源汽车续航能力
  • “五一”假期国铁集团计划日均开行旅客列车超1.2万列
  • 2025五一档新片电影总票房破亿
  • 两部门预拨4000万元支持山西、广西、陕西做好抗旱救灾工作
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 美的集团一季度净利增长38%,库卡中国机器人接单增超35%
  • 从孔雀尾巴到蒙娜丽莎,一个鸟类学博士眼中的“美”