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

网上的面经【面试准备】

网上的面经【面试准备】

  • 前言
  • 版权
  • 推荐
  • 网上的面经【面试】
  • 腾讯广告后台开发一面
  • 字节跳动日常实习一面凉经
  • 数字马力 后端开发 一面二面面经(社招)
  • 阿里后台面试
  • 最新Java后端面经合集 | 阿里腾讯百度字节]
  • 最后

前言

2023-07-15 18:39:29

公开发布于
2024-5-21 13:03:14

以下内容源自《【面试】》
仅供学习交流使用

版权

禁止其他平台发布时删除以下此话
本文首次发布于CSDN平台
作者是CSDN@日星月云
博客主页是https://blog.csdn.net/qq_51625007
禁止其他平台发布时删除以上此话

推荐

网上的面经【面试】

腾讯广告后台开发一面

https://www.nowcoder.com/feed/main/detail/cdc7d6f87d904a75926a390cf9801777
1.自我介绍

2.问项目

3.数据库索引,索引优化,B+树

数据库优化:索引优化和查询优化InnoDB使用B+树存储B+树就是内部结点不存储数据,数据只存储到叶子结点上
而B树的内部结点可以存储数据

4.MySQL 隔离级别,InnoDB 引擎

读未提交
读已提交 Oracle数据库默认
可重复读 Mysql.InnoDB默认支持
串行化MyIsam是不支持事务的

5.聚簇索引和非聚簇索引

聚簇索引就是索引即数据
InnoDB引擎中 idb文件(存储数据和索引)非聚簇索引 索引存储数据的地址
MyIsam引擎中 .MYI存储索引 (MYIndex)  .MYD存储数据 (MYData)

6.操作系统请求分页过程,调度算法,内存扩容原理

在快表里查找是否有相应的页号,查到之间调入
同时并行的在主存中查找 块号
然后调入最佳页面置换算法
先进先出
LRU
LFU
Clock内存扩容原理:利用虚拟内存

7.操作系统进程原理,互斥量,信号量机制


PV操作

8.计算机网络七层网络的协议,过程,ARP 协议

物理层 数据链路层 网络层 运输层 会话层 表示层 应用层ARP:知道IP地址查出MAC地址
ARP:只使用与局域网,本网络中,
利用网络和掩码可知是否是同一网络,不在就询问默认网关,默认网关的MAC地址也是不知道的
ARP请求:广播询问:某IP地址的MAC地址是什么。并告知自己的IP地址和MAC地址
ARP响应:单播回应:我是这个IP地址,我的MAC地址是XX还有:逆向ARP RARP:说是DHCP已经包含了该协议了
DHCP询问
DHCP响应

9.HTTPS 实现原理,对称加密和非对称加密的过程极其所处的流程

HTTP+TLS
TSL的四次过程
client hello
server hello
证书
证书对称加密:明文 加密算法 密钥 解密算法 密文
非对称加密:明文 加密算法 公钥 私钥 解密算法 密文

10.三次握手四次挥手中各个状态位的变化以及 seq 指的是什么

三次握手
服务器 开启端口 被动接听  进入Listen状态
客户端 主动开启
发送SYN包 进入SYN-SEND状态
服务端收到发送ACK包 进入SYN-RCVD状态
客户端收到 发送ACK包进入established状态 
服务端收到进入established状态 四次挥手
A发送FIN包,进入FIN-WAIT-1状态
B发送ACK包,进入CLOSE-WAIT状态 A收到进入FIN-WAIT-2状态
B发送FIN包,进入LAST-WAIT
A收到发送ACK包,进入TIME-WAIT状态 B收到进入CLOSE状态
A过了2MSL时间,进入CLOSE状态seq指的是序号 TCP首部的字段

11.Redis 数据结构,跳表原理

string raw emtr int
list
hash 
set 
zset 跳表

12.JMM 内存模型

主存和线程缓存之间的一致性问题
原子性 可见性 有序性
先行发生原则

13.TopK 问题,堆在内存中怎样存储,数据结构怎样
14.简单 Sql 查询
15.个人优势

字节跳动日常实习一面凉经

https://www.nowcoder.com/discuss/509132115900907520?sourceSSR=%E5%85%B6%E4%BB%96

如果上线的项目出现问题,你怎么排查?

看日志

Linux 实时查看日志的命令?
总结Linux 中实时查看日志的3种方法
tail -f命令,-f 可以

你的项目用的是ip地址,没有用域名,域名怎么指向ip地址

首先查浏览器缓存
然后查hosts文件
查操作系统缓存
询问默认的dns服务器
迭代查询
本地服务器分别询问根服务器 顶级域名服务器 权限域名服务器

Java异常了解吗,说一说,常见的运行时异常

ThrowAble有Error和Exception
Exception 编译时异常 运行时异常Runtime Exception
常见的运行时异常:空指针异常 数组下标越界异常

怎么定位空指针异常

NULL空指针常见情况(修复和定位)
https://blog.csdn.net/Bulldozer_GD/article/details/123071395

说一说error有哪些

OOM和Stack OverFlow

线程池的原理

我说说线程怎么创建
有继承Thead类
实现Runnable接口
实现Callable接口
还有就是线程池中取线程  submit execute当想要获取一个线程时,线程池就会看看有没有空闲线程,如果有直接返回
如果核心线程被占完的话,就会进入排队
队满的话,就需要 创建额外的工作线程 来接待任务了
如果没有的话,就有对应的拒绝策略来处理
另外就是线程的创建借助于线程工厂

redis和mysql的区别
数据库和缓存主从一致性,先更新数据库还是先更新缓存,为什么

先更新数据,后删除缓存

先更新数据库,再删除缓存还不完美,再想一个方案

延迟双删
利用消息队列进行异步操作

mysql隔离级别

读未提交 读已提交 可重复读 串行化

mysql默认的隔离级别

可重复读

mysql不可重复读的原理是什么

MVCC

mvcc介绍一下,原理

undo log
事务id
快照
在可重复读的隔离下,每读一次就会读快照
在读已提交的隔离下,第一次读就会读快照

nginx介绍,干啥的
nginx负载均衡的方式
git代码冲突怎么解决

对比差异 ,保留有效代码 , 合并

有了http,为啥还要有rpc

既然有了HTTP,为什么还要RPC?
https://blog.csdn.net/zhengren964/article/details/131478747
远程过程调用

全局异常处理器的原理是什么?

全局异常处理器这个类的核心是什么?

aop的通知介绍是什么?

面向切面编程
在连接点上执行的动作就叫通知
前置通知 后置通知 环绕通知 最后通知 异常通知

思维题:1毛钱买一个桃子,三个桃核换一个桃子,1块钱可以吃几个桃子

15个(+借一个桃核)
----------------------------
三个桃核=一个桃肉+一个桃核
故:
一个桃核=半个桃肉
所以:
一毛钱=十个桃肉+十个桃核=十五个桃肉
理论上是十五个。
--------------------------------------
买10个桃子,吃完 有10个桃核
换3桃 还剩1桃核
吃完3个桃 有4个桃核
换1个桃 还剩1个桃核
吃完1个桃 还有2个桃核
和老板借一个桃核 ,有3个桃核换一个桃,
吃完1个桃,还给老板一个桃核

思维题:12个球,其中1个质量不一样,称天平称几次最多可以找出里面那个不一样的球

六次
-----------------------------------------
分为甲4 乙4 丙4 
甲乙称一次,如果相同就在丙中 如果不一样;但是不知道是重是轻 就在甲乙
甲丙称一次,如果相同就在乙中,如果也不相同 就在甲丙
乙丙称一次,如果相同就在甲中,如果不相同 就在乙丙根据上三种情况,就能知道不一样的球在甲|乙|丙
4个ABCD中找出指令不一样的
AB称
BC称 
AC称
如果都相同就是D
否则也能推出来到底是A|B|C

答案是三次
类似于 逻辑选做题解:2、假币谜题

算法题:输出小于n的最大数,最大数的每一位只能从2,4,9上面选

2023-07-15 20:39:29

数字马力 后端开发 一面二面面经(社招)

2023-7-16 14:50:22

https://www.nowcoder.com/discuss/509810343657353216

时隔1年,甚是感慨,没想到这么快又来面试了。
一面(30分钟)2023.07.10
自我介绍
能简单说一下用了哪些设计模式

单例模式 
工厂模式
适配者模式 Runable Callable
原型模式

能简单描述一下策略模式吗?策略模式和if-else有什么区别,怎么定义策略类的


Linux在一个目录下面,有100个文件,需要匹配以 ‘query’ 开头的日志,并且把数量统计一下,用什么命令 (grep -c ‘^query’ /path/to/directory/*)


Java版本用什么

8

平时有用多线程吗

对于java多线程在工作什么时候会用到?
https://www.zhihu.com/question/305327489/answer/2915344554Tomcat每一次请求,需要获取线程
数据库连接池,每次连接需要线程
框架底层都封装好了

用过stream和lambda表达式吗

流式编程
()->{}

有一个list,包含字符串,先转换成大写,然后再对这个list进行排序

public class StringListSorting {public static void main(String[] args) {List<String> myList = new ArrayList<>();myList.add("apple");myList.add("banana");myList.add("orange");myList.add("grape");// 转换为大写形式List<String> uppercaseList = new ArrayList<>();for (String str : myList) {uppercaseList.add(str.toUpperCase());}// 或者使用流式操作// List<String> uppercaseList = myList.stream().map(String::toUpperCase).collect(Collectors.toList());// 对转换后的列表进行排序Collections.sort(uppercaseList);// 或者使用流式操作// List<String> sortedList = uppercaseList.stream().sorted().collect(Collectors.toList());System.out.println(uppercaseList);}
}

9、你们Redis的使用场景,具体怎么去用

做缓存
存储 点赞 粉丝 关注
做分布式锁Redis 16 个常见使用场景
https://blog.csdn.net/agonie201218/article/details/123640871

10、基于Redis做分布式锁有使用Lua脚本吗

11、两张表,一个是员工表

副表

筛选出某部门工资最高的员工的name

SELECT e.name 
FROM employee e 
INNER JOIN department d ON e.departmentId = d.departmentId 
WHERE d.departmentName = '目标部门名称' 
ORDER BY e.salary DESC 
LIMIT 1;

12、会用反射之类的吗

13、对数据库索引有一些优化吗

设置合理的索引,防止索引失效
全值匹配 最佳左前缀法则覆盖索引		依据索引查询到的刚好就是需要包括返回的字段,不需要回表操做
索引条件下推ICP	先过滤后回表 VS 先回表后过滤

14、假如有sql比较慢,怎么去优化

慢查询日志
性能分析工具
看看是全表扫描,还有看看有没有使用到索引

15、三数之和

16、反问

二面(20分钟)2023.07.13
自我介绍
项目中主要做那一块的工作

项目中具体做了哪些性能优化
大数据量表除了分表还有什么优化方式(分库、加索引、数据归档)

什么情况用到Redis,怎么用,怎么做分布式锁

为什么可以Redis可以用做分布式锁

为什么不用其他的,而用Redis

比较过Redis和其他缓存框架的性能吗

Memcached能用作分布式锁吗

为什么可以Redis可以用做分布式缓存,Memcached能做到吗

有没有什么项目留下深刻印象

工作中看过什么其他技术(大概说了下k8s)

能说一下什么是配置中心吗

了解过多线程吗

为什么不要new Thread()

抛弃new Thread
https://blog.csdn.net/u012304076/article/details/45875945性能差 功能不多 线程池统一管理

写个造成死锁的代码

public class DeadLockDemo {private static Object resource1 = new Object();//资源 1private static Object resource2 = new Object();//资源 2public static void main(String[] args) {new Thread(() -> {synchronized (resource1) {System.out.println(Thread.currentThread() + "get resource1");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread() + "waiting get resource2");synchronized (resource2) {System.out.println(Thread.currentThread() + "get resource2");}}}, "线程 1").start();new Thread(() -> {synchronized (resource2) {System.out.println(Thread.currentThread() + "get resource2");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread() + "waiting get resource1");synchronized (resource1) {System.out.println(Thread.currentThread() + "get resource1");}}}, "线程 2").start();}
}

17、除了用synchronized加锁还有其他方式加锁吗

ReentrantLock
lock unlock 需要配合try catch finally

18、用ReentrantLock怎么实现

AQS state
同步队列阻塞器

19、反问

#数字马力社招#

2023-7-16 17:40:56

阿里后台面试

一、电话面

1、自我介绍

2、一些开放性问题,如如何看待理论和实践的关系

3、介绍项目,实验室的和个人做的

4、问实习相关内容

5、八股相关

- ping原理- curl是什么,和ping的区别- 讲一下Java有哪些集合类- 讲一下JVM堆结构- Java的写锁和读写锁区别- 进程和线程区别- java的线程和go的协程的区别- OSI七层协议,传输层有哪些协议- 子网掩码- InnoDB有哪些特性- InnoDB存储原理- 索引相关- 数据库隔离级别

6、做题,开放题

最新Java后端面经合集 | 阿里腾讯百度字节]

最新Java后端面经合集 | 阿里腾讯百度字节

一面
简单介绍项目
知道哪些数据结构以及他们的特点

线性表:数组,链表,栈、队列、多维线性表
树:二叉树 BST AVL B B+ 红黑树
图:

链表增删快,那如何提高其查询效率,有没有什么想法?

加入Hash

B+树了解吗?B+树如何范围查询?B+树退化的极端情况是什么?

Mysql中索引的实现
叶子结点用是双向链表连接
页内记录使用单链表连接

跳表了解吗?

redis的zset的实现
可以进行二分查找的有序链表
它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,
目前在Redis和LeveIDB中都有用到。

大顶堆、小顶堆了解吗?

大顶堆:每个结点的值都大于或等于其左右孩子结点的值。堆顶元素是堆中最大的元素。
小顶堆:每个结点的值都小于或等于其左右孩子结点的值。堆顶元素是堆中最小的元素

实现长地址请求到服务端,然后服务端重定向短地址给客户端,如何实现长短地址的互相映射?

很多都是这样的,比如CSDN和blibil:App和浏览器的地址
https://blog.csdn.net/qq_43223115/article/details/118962623
① 将长地址与一个整数建立映射(一对多)
长连接与整数int64映射起来,存入Mysql中
②base62编码
进行base62编码,26个小写字母,26个大写字母,10个0-9
③拼接上域名。

那我现在有10份数据,有1000个线程来争抢,你要怎么处理?

结合我的秒杀项目来说
比如商品有十个库存,现在有1000个用户来秒杀
验证码
限流器
队列泄洪
消息队列异步
售罄标识

分布式是什么?为什么要分布式?分布式又会有哪些问题?分布式系统是如何实现事物的?

Redis集群了解吗?如何处理宕机的情况?Redis的同步策略?

LRU算法了解吗?你会如何实现它?这个算法可以应用在哪些场景下?

用到缓存中都可以使用
redis的内存淘汰策略
Mysql的Buffer Pool中

TCP为什么是三次握手?两次行不行?多次行不行?

两次会有历史连接重复连接
三次够了,四次就是把2分开两次,浪费资源
ack能携带就携带,不需要单独发送ack包

TCP的安全性是如何实现的?两台服务器之间可以同时建立多条TCP链接吗?怎么实现的?

流量控制 拥塞控制 连接管理可以

客户端输入一个网址后,是如何拿到客服想要的数据的,是怎样在网络中传输的?

https://www.ewbang.com/community/article/details/960668555.html

cookie和session

java有哪些锁?共享锁是什么?CAS?乐观锁和悲观锁?synchronied的底层原理?锁升级?死锁怎么形成的?如何破解死锁?

二面
Java容器:List,Set,Map

Map的遍历方式

HashMap扩容为什么是扩为两倍?

Java线程同步机制(信号量,闭锁,栅栏)

对volatile的理解:常用于状态标记

八种基本数据类型的大小以及他们的封装类(顺带了解自动拆箱与装箱)

线程阻塞几种情况?如何自己实现阻塞队列?

Java垃圾回收。可达性分析->引用级别->二次标记(finalize方法)->垃圾收集 算法(4个)->回收策略(3个)->垃圾收集器(GMS、G1)。

java内存模型

TCP/IP的理解

进程和线程的区别

http状态码含义

ThreadLocal(线程本地变量),如何实现一个本地缓存

JVM内存区哪里会出现溢出?

双亲委派模型的理解,怎样将两个全路径相同的类加载到内存中?

CMS收集器和G1收集器
TCP流量控制和拥塞控制
服务器处理一个http请求的过程
例举几个Mysql优化手段
数据库死锁定义,怎样避免死锁
spring的aop是什么?如何实现的
面向对象的设计原则
策略模式的实现
操作系统的内存管理的页面淘汰 算法 ,介绍下LRU(最近最少使用算法 )
B+树的特点与优势
三面
自我介绍,说简历里没有的东西
说几个你最近在看的技术(MySQL,多线程)
口述了一个统计数据的场景题
如果这个统计数据场景不用MySQL,而是用Java来实现,怎么做
如果数据量过大,内存放不下呢
用面向对象的思想解决上面提出的问题,创建出父类,子类,方法,说一下思路
下一个场景,口述了一个登录场景,同学用线程池做登录校验,会有什么问题
如何解决这些问题
你给出的方案弊端在哪里,还有哪些方案
四面
谈谈类加载机制。
hashmap和concurenthashmap
16g机器,让你分配jvm内存怎么分配。
机器慢了怎么排查。
谈谈consul和zookeeper,还有服务发现机制。
详细说明raft协议。
谈谈consul和zookeeper区别。
服务注册的时候发现没有注册成功会是什么原因。
讲讲你认为的rpc和service mesh之间的关系。

最后

我们都有光明的未来

祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦

相关文章:

  • Docker打包nginx镜像丢失挂载的配置文件
  • Vue3实现上传照片以及回显
  • Linux--进程概念
  • 配置yum源
  • HTML5表单控件:新时代的交互魔法手册
  • 深入探索Kafka:了解其不可或缺的核心组件
  • linux:切分大文件
  • 论文精读:UFO: A UI-Focused Agent for Windows OS Interaction
  • 521源码-在线客服-CRMChat网页版客服系统 UNIAPP 全方位在线客服系统源码与管理体系平台
  • TS代码解读:eslint-disable-next-line @typescript-eslint/no-namespace
  • “Excel+中文编程”衍生新型软件,WPS用户:自家孩子
  • 数据库查询-聚合函数详解,聚合函数应用,分组查询
  • 【相机开发问题总结】后台恢复到前台预览界面卡住
  • 【14】bat脚本备份mysql数据
  • 重大活动网络安全保障建设及运营指南
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • iOS | NSProxy
  • JavaScript-Array类型
  • Mysql优化
  • Netty 4.1 源代码学习:线程模型
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • vagrant 添加本地 box 安装 laravel homestead
  • webpack+react项目初体验——记录我的webpack环境配置
  • 读懂package.json -- 依赖管理
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 使用Swoole加速Laravel(正式环境中)
  • 思维导图—你不知道的JavaScript中卷
  • 微信小程序:实现悬浮返回和分享按钮
  • 异步
  • 再谈express与koa的对比
  • 走向全栈之MongoDB的使用
  • 做一名精致的JavaScripter 01:JavaScript简介
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • #Linux(make工具和makefile文件以及makefile语法)
  • (5)STL算法之复制
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (论文阅读11/100)Fast R-CNN
  • (十六)串口UART
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转) Face-Resources
  • (转)大型网站的系统架构
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Framework .NET Core与 .NET 的区别
  • .NET Standard 的管理策略
  • .NET简谈设计模式之(单件模式)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [AHOI2009]中国象棋 DP,递推,组合数