mysql存储数据的数据结构,终于彻底把握了

第一家是美团

美团的话,三面下来,设计的内容知识也是挺广的吧,有MySQL、Redis、Kafka、线程、算法、+、volatile、线程、并发、设计模式等等…
image.png

一面问题:MySQL+Redis+Kafka+线程+算法

  • mysql知道哪些存储引擎,它们的区别

  • mysql索引在什么情况下会失效

  • mysql在项目中的优化场景,慢查询解决等

  • mysql有什么索引,索引模型是什么

  • B-树与B+树的区别?为什么不用红黑树

  • mysql主从同步怎么做

  • 乐观锁与悲观锁的区别?

  • binlog日志

  • redis 持久化有哪几种方式,怎么选?

  • redis 主从同步是怎样的过程?

  • redis 的 zset 怎么实现的?

  • redis key 的过期策略

  • hashmap 是怎样实现的?为什么要用红黑树,而不用平衡二叉树?为什么在1.8中链表大于8时会转红黑树?HashMap为什么线程不安全的?

  • 如何实现线程安全的hashmap?

  • select 和 epoll的区别

  • http与https的区别,加密怎么加的?

  • raft算法详细讲解

  • Kafka 选主怎么做的?

  • kafka如何保证生产与消费都是同步的?

  • kafka 怎么保证不丢消息的

  • redis如何保证高可用

  • 算法:剪绳子(贪心或递归解决)

  • 算法:给前序和中序遍历,重建二叉树

二面问题:volatile+线程+并发+算法+设计模式

  • 自我介绍

  • 讲讲项目(项目没啥亮点,直接问基础)

  • volatile作用?底层实现?禁止重排序的场景?单例模式中volatile的作用?

  • 如何构造线程池,它的参数,饱和策略?

  • 公平锁和非公平锁区别?为什么公平锁效率低?

  • 线程都有哪些状态?

  • 线程、进程、协程的区别?

  • 同步队列器AQS思想,以及基于AQS实现的lock,。

  • 并发工具类CountDownLatch、CyclicBarrier、Semaphore介绍

  • Execuors类实现的几种线程池类型,最后如何返回?

  • 手写单例模式

  • 手写消费者生产者模式

  • 算法:反转单链表

  • 算法:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。

三面

这一面,没问啥东西,主要聊人生,和未来3年的规划。。。。。。

第二家是字节跳动

image.png

一面问题:算法+数据库+事务+网络

  • 自我介绍

  • 项目介绍(没亮点,还是问基础)

  • 堆排序的原理及时间复杂度,是否稳定,最坏及最坏场景。

  • Object类都有哪些方法?

  • DNS解析的过程/浏览器输入一个url,敲下回车后网络的全过程

  • HTTP和HTTPS的区别

  • UDP怎么实现可靠传输

  • 介绍下https,是如何加密的,加密算法

  • 数据库索引的优缺点,以及什么时候数据库索引失效

  • 事务的隔离级别?

  • 数据库的脏读,不可重复读,幻读

  • 算法:接雨水:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

  • 算法:N皇后

二面问题:Kafka+redis+算法

  • Kafka的特性?

  • Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?

  • 消费者重平衡(高可用性、伸缩性)

  • 哪些情景下会造成消息漏消费?

  • 如何保证消息不被重复消费(幂等性)

  • KafkaConsumer是非线程安全的,那么怎么样实现多线程消费?

  • Kafka生产者客户端中使用了几个线程来处理?分别是什么?

  • 消费者与生产者的工作流程:

  • topic的分区数可不可以增加?

  • 算法:二叉树中的最大路径和

  • 算法:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

三面问题:Redis+Spring+Dubbo+算法

  • redis的Zset怎么实现的?

  • sentinel和cluster区别和各自适用场景

  • redis cluster集群同步过程

  • redis单线程为什么快?

  • mybatis一级缓存和二级缓存

  • spring如何解决循环依赖?

  • spring AOP的原理。

  • spring的生命周期。

  • Dubbo服务暴露和引用过程,负载均衡策略,容错机制在哪里实现的源码

  • 项目中遇到了哪些问题。(抱歉,我的工作就是增删改查,没接触过相关问题)

  • 算法:二叉树的镜像

  • 算法:从上到下打印二叉树

最后一家,瞄一下腾讯

腾讯这三面下来问的也不少,自求多福吧。

image.png

一面问题:高并发+微服务+算法

  • 如何设计一个秒杀系统?

  • 一天爬一千万条文章,怎么做设计?怎么并行协调?100 台服务器怎么尽可能负载均衡?

  • 有用过短域名服务吗,能说一下吗?

  • 微服务的特点,如何实现服务发现和负载均衡

  • 如何排查线上问题?(背过,没排过)

  • 贝叶斯的概率学原理

  • 负载均衡的加权轮询算法怎么实现

  • 如果用户量大幅度上涨,如何优化?

  • paxos算法(这个算法太难,学的时候就没太理解)

  • 平时都看什么博客,最近看什么书了

二面问题:Redis+分布式+算法

  • 自我介绍

  • 项目介绍

  • redis的5种类型,及其实现原理

  • 如何使用redis的Zset实现延时队列?

  • redis如何实现高可用?

  • redis缓存穿透、缓存击穿、缓存雪崩

  • 布隆过滤器的实现

  • 如何保证mysql与redis的双写一致性?

  • 负载均衡算法有哪些?

  • 服务发现是怎么实现的?

  • 熔断是怎么实现的?

  • 算法:连续子数组的最大和

  • 讲讲分布式CAP和BASE?

  • 什么是强一致性?

  • 分布式事务的解决方案?

  • TCC(两阶段型、补偿型)

  • id生成器如何实现?

  • 如何判断一个图是否有环?

  • 一致性Hash算法,及其应用

  • 背包问题

三面问题:Redis+分布式+MySQL+算法

  • 自我介绍

  • 项目介绍

  • redis的zSet如何实现?

  • redis持久化机制。

  • redis的Hash类型讲解,渐进式rehash。

  • HashMap原理,一个put操作,都有什么流程?

  • nginx有自己配置过吗(这个是我唯一手动操作过的,这个不是背的)

  • nginx的使用场景。

  • 什么是分布式,什么是集群,区别是什么?

  • 在基于dubbo的分布式环境中,一般将超时timeout设置在provider还是consumer?

  • dubbo中负载均衡的策略有哪些?

  • 接口的异步调用?如何设置?运行效果?

  • 谈谈基于dubbo的系统中consumer集群的解决方案?

  • mysql是集群还是单节点?最大连接数,最大的表中数据量大约是多少?

  • mysql主从复制主要有哪几种模式?

  • mysql索引,B+树,为什么不用红黑树?

  • 数据库垂直与水平拆分怎么做。

  • 分布式session设置

  • IO、BIO、NIO,阻塞与非阻塞的区别?

  • 分布式接口的幂等性设计(不能重复扣付款)

  • 算法:二叉搜索数与双向链表(这个懵了)

  • 算法:最长不含重复字符的子字符串

  • 算法:手写快速排序、插入排序、冒泡排序,并分析时间复杂度和空间复杂度,它们的稳定性

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后,如果有想要我整理的面试资料的,可以**戳这里免费领取**,我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

面试了阿里,滴滴,网易,蚂蚁,最终有幸去了网易【面试题分享】

视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后,如果有想要我整理的面试资料的,可以**戳这里免费领取**,我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

[外链图片转存中…(img-bNCymUY5-1625948916923)]

热门文章

暂无图片
编程学习 ·

exe4j详细使用教程(附下载安装链接)

一、exe4j介绍 ​ exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏…
暂无图片
编程学习 ·

AUTOSAR从入门到精通100讲(126)-浅谈车载充电系统通信方案

01 引言 本文深入研究车载充电系统策略,设计出一套基于电动汽车电池管理系统与车载充电机的CAN通信协议,可供电动汽车设计人员参考借鉴。 02 电动汽车充电系统通讯网络 电动汽车整车控制系统中采用的是CAN总线通信方式,由一个整车内部高速CAN网络、内部低速CAN网络和一个充电…
暂无图片
编程学习 ·

CMake(九):生成器表达式

当运行CMake时,开发人员倾向于认为它是一个简单的步骤,需要读取项目的CMakeLists.txt文件,并生成相关的特定于生成器的项目文件集(例如Visual Studio解决方案和项目文件,Xcode项目,Unix Makefiles或Ninja输入文件)。然…
暂无图片
编程学习 ·

47.第十章 网络协议和管理配置 -- 网络配置(八)

4.3.3 route 命令 路由表管理命令 路由表主要构成: Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低Genmask:目标网络对应的netmaskIface: 到达对应网络,应该从当前主机哪个网卡发送出来Gateway: 到达非直连的网络,…
暂无图片
编程学习 ·

元宇宙技术基础

请看图: 1、通过AR、VR等交互技术提升游戏的沉浸感 回顾游戏的发展历程,沉浸感的提升一直是技术突破的主要方向。从《愤怒的小鸟》到CSGO,游戏建模方式从2D到3D的提升使游戏中的物体呈现立体感。玩家在游戏中可以只有切换视角,进而提升沉浸…
暂无图片
编程学习 ·

flink的伪分布式搭建

一 flink的伪分布式搭建 1.1 执行架构图 1.Flink程序需要提交给 Job Client2.Job Client将作业提交给 Job Manager3.Job Manager负责协调资源分配和作业执行。 资源分配完成后,任务将提交给相应的 Task Manage。4.Task Manager启动一个线程以开始执行。Task Manage…
暂无图片
编程学习 ·

十进制正整数与二进制字符串的转换(C++)

Function one: //十进制数字转成二进制字符串 string Binary(int x) {string s "";while(x){if(x % 2 0) s 0 s;else s 1 s;x / 2;}return s; } Function two: //二进制字符串变为十进制数字 int Decimal(string s) {int num 0, …
暂无图片
编程学习 ·

[含lw+源码等]微信小程序校园辩论管理平台+后台管理系统[包运行成功]Java毕业设计计算机毕设

项目功能简介: 《微信小程序校园辩论管理平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的辩论管理前台和Java做的后台管理系统: 微信小程序——辩论管理前台涉及技术:WXML 和 WXS…
暂无图片
编程学习 ·

树莓派驱动DHT11温湿度传感器

1,直接使用python库 代码如下 import RPi.GPIO as GPIO import dht11 import time import datetimeGPIO.setwarnings(True) GPIO.setmode(GPIO.BCM)instance dht11.DHT11(pin14)try:while True:result instance.read()if result.is_valid():print(ok)print(&quo…
暂无图片
编程学习 ·

ELK简介

ELK简介 ELK是三个开源软件的缩写,Elasticsearch、Logstash、Kibana。它们都是开源软件。不过现在还新增了一个 Beats,它是一个轻量级的日志收集处理工具(Agent),Beats 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstas…
暂无图片
编程学习 ·

Linux 基础

通常大数据框架都部署在 Linux 服务器上,所以需要具备一定的 Linux 知识。Linux 书籍当中比较著名的是 《鸟哥私房菜》系列,这个系列很全面也很经典。但如果你希望能够快速地入门,这里推荐《Linux 就该这么学》,其网站上有免费的电…
暂无图片
编程学习 ·

Windows2022 无线网卡装不上驱动

想来 Windows2022 和 windows10/11 的驱动应该差不多通用的,但是死活装不上呢? 搜一下,有人提到 “默认安装时‘无线LAN服务’是关闭的,如果需要开启,只需要在“添加角色和功能”中,选择开启“无线LAN服务…
暂无图片
编程学习 ·

【嵌入式面试宝典】版本控制工具Git常用命令总结

目录 创建仓库 查看信息 版本回退 版本检出 远程库 Git 创建仓库 git initgit add <file> 可反复多次使用&#xff0c;添加多个文件git commit -m <message> 查看信息 git status 仓库当前的状态git diff 差异对比git log 历史记录&#xff0c;提交日志--pret…
暂无图片
编程学习 ·

用Postman生成测试报告

newman newman是一款基于nodejs开发的可以运行postman脚本的工具&#xff0c;使用Newman&#xff0c;可以直接从命令运行和测试postman集合。 安装nodejs 下载地址&#xff1a;https://nodejs.org/en/download/ 选择自己系统相对应的版本内容进行下载&#xff0c;然后傻瓜式安…
暂无图片
编程学习 ·

Java面向对象之多态、向上转型和向下转型

文章目录前言一、多态二、引用类型之间的转换Ⅰ.向上转型Ⅱ.向下转型总结前言 今天继续Java面向对象的学习&#xff0c;学习面向对象的第三大特征&#xff1a;多态&#xff0c;了解多态的意义&#xff0c;以及两种引用类型之间的转换&#xff1a;向上转型、向下转型。  希望能…