分享一下最近的面试题,都是大厂

分享一下最近的面试题,都是大厂

大家好,又见面了,我是全栈君。

前言

  • 定位大概是中高级,这个阶段主要考察的是原理相关的东西,语法层面几乎不会问。

  • 建议不要去背面试题,因为大部分问题都会追问,是不是理解了一问就问得出来。面试题只是帮助我们了解自己技术方面的缺陷,背几个面试题对自己没有任何帮助。

  • 获取答案的方式在每个标题后面的括号里,都是书或者源代码,系统性补充知识最佳途径就是经典书籍和优质源代码,网上博客知识点过于零散,难以深入。redis 和 zend vm 的核心代码强烈推荐大家去看一下,很有帮助

操作系统(《CSAPP》/《APUE》)

  1. IO 多路复用是什么?有哪些 api?

  2. select 和 epoll 的区别?水平触发和边缘触发的区别是啥?使用的时候需要注意什么?

  3. epoll 储存描述符的数据结构是什么?

  4. select 有描述符限制吗?是多少?

  5. 进程 / 线程 / 协程区别?go 和 swoole 的协程实现有啥区别?(分配资源的基本单位 / 运行和调度的基本单位 / 用户线程,M:N 模型和 N:1 模型)

PHP(php 源代码,主流 php 框架源代码)

  1. 描述一下 cli 模式下的几个生命周期?

  2. php-fpm 运行机制?(master 管理,worker 循环 accept)

  3. php-fpm 模式下,kill -9 master-pid,会怎么样?kill matser-pid 呢?(信号机制)

  4. 内存分配流程?为什么要这么设计?

  5. GC 的出现是为了解决什么问题?什么时候会触发 GC?说下大概流程

  6. php 里的数组是怎么实现的?(这里要注意下 php5 和 php7 实现的区别,优化了非常多)

  7. nginx 和 php-fpm 的通信机制?fast-cgi 和 cgi 区别?

  8. php-fpm 创建 worker 进程的规则是什么?不同场景下怎么选择?

  9. php 和 mysql 的通信机制?长链接和短链接啥区别?怎么实现的?连接池要怎么实现?

  10. swoole 协程的原理?(遇到阻塞时引发 php 栈和 c 栈的切换,细节可以参考下我的文章)

  11. 依赖注入是什么?如何实现的?能解决什么问题?(代码层面不再依赖具体实现,解耦)

mysql(《高性能 mysql》/《mysql 技术内幕 innodb 储存引擎》)

  1. innodb 的索引组织方式?(聚簇索引必须要很清楚,注意 innodb 聚簇索引叶子结点保存的是完整数据,innodb 普通索引叶子保存的是记录的主键,myisam 索引叶子保存的是记录的位置 / 偏移量)

  2. B + 树的结构和插入细节?为什么主键一般都要自增?和 B 树什么区别?为什么索引要使用 B + 树不是 B 树也不是其他的平衡树?为什么 redis 可以用跳表?(关键词:页的分裂,随机 IO,缓存体系)

  3. 常见的优化(这里我就不展开了,主要考察覆盖索引查询和最左匹配,其实只要清楚 innodb 索引的结构,这些都不需要记忆,自然而然推导出来的)

  4. redolog/undolog/binlog 的区别?binlog 的几种格式?说下两阶段提交?

  5. 事务隔离级别和不同级别会出现的问题,innodb 默认哪个级别?MVCC 怎么实现的?快照读和当前读有啥区别?幻读的问题怎么解决?

  6. 死锁什么时候会出现?应用层应该怎么做避免死锁?mysql 是怎么处理死锁的呢?

  7. int 占多少字节?bigint 呢?int (3) 和 int (11) 有区别吗?可以往 int (3) 里存 1 亿吗?varchar 最长多少?

  8. sql 的执行流程(原始 sql-> 词法语法分析生成 AST-> 关系代数表达式(逻辑计划)-> 逻辑优化(谓词下推 / 常量传递)-> 物理查询优化(计算最佳 cost 路径,扫表还是使用索引,join 算法)-> 执行,仅做参考)

redis(redis 源代码)

  1. sds 的结构是什么?为什么要存长度?跟 c 里的字符串有什么区别?(关键词:获取长度复杂度 O (1) 和 O (n),二进制安全,保存 \0,跟 C 库字符串函数可以通用)

  2. hash 怎么实现的?怎么解决 hash 冲突?除了 hashTable 还有别的吗?

  3. zset 怎么实现的?跳表是怎么插入的?为什么选择跳表不用其他平衡二叉树?除了跳表还有别的吗?

  4. rehash 过程?会主动 rehash 吗?

  5. 用 redis 可以实现队列吗?有什么优点和缺点?

  6. 用 redis 怎么实现一个延时队列?

  7. rdb 和 aof 过程?rdb 为什么可以用创建子进程的方式进行?(这里考察一个 cow)这两种持久化方式会丢数据吗?

  8. redis 为什么快?(主要考察一个 IO 多路复用和单线程不加锁)

  9. 一致性哈希是什么?节点较少时数据分布不均匀怎么办?

  10. 简单说下几种 key 的淘汰策略,redis 里的 lru 算法,什么时候会触发?实现细节是什么?怎么保证淘汰合理的 key?

  11. lua 脚本的作用是什么?

  12. 缓存击穿 / 穿透 / 雪崩的处理策略

nginx

LVS 和 Nginx 分别作用在 osi 哪一层?

负载均衡算法

数据结构

布隆过滤器,什么时候用?优点是什么?

算法

leetcode easy 级别的题目,具体我就不写了,难度比较低

来源:https://learnku.com/articles/41140

分享一下最近的面试题,都是大厂

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111786.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 关于C语言数组的输入与输出[通俗易懂]

    关于C语言数组的输入与输出[通俗易懂]先摆代码:#include#includeintmain(){ chara[8];//定义数组,不设初值 chara[8]={‘a’};//定义数组,设置初值,这样其余为\0 scanf(“%s”,a);//第一种输入方式 inti=0;//第二种输入方式 for(;i<=sizeof(a)-1;i++) { char

  • 常见存储引擎_存储引擎

    常见存储引擎_存储引擎TiKV简介TiKV是一个分布式事务型的键值数据库,提供了满足ACID约束的分布式事务接口,并且通过Raft协议保证了多副本数据一致性以及高可用。TiKV作为TiDB的存储层,为用户写入TiDB的数据提供了持久化以及读写服务,同时还存储了TiDB的统计信息数据。整体架构与传统的整节点备份方式不同,TiKV参考Spanner设计了multiraft-group的副本机制。将数据按照key的范围划分成大致相等的切片(下文统称为Region),每一个切片会..

  • phpspreadsheet中文手册_php读取文件内容

    phpspreadsheet中文手册_php读取文件内容由于phpexcel已经不再维护,phpspreadsheet是phpexcel的下一个版本。phpspreadsheet是一个用纯php编写的库,并引入了命名空间,psr规范等。这里简单介绍下phpspreadsheet的导入导出功能。1、安装使用composer安装:composerrequirephpoffice/phpspreadsheetgithub下载:2、excel文件导出/**…

  • ribbon默认的负载均衡策略_集群负载均衡策略

    ribbon默认的负载均衡策略_集群负载均衡策略官方文档指出:自定义的负载均衡配置类不能放在@componentScan所扫描的当前包下及其子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是说我们达不到特殊化定制的目的了;要求自定义的算法:依旧是轮询策略,但是每个服务器被调用5次后轮到下一个服务,即以前是每个服务被调用1次,现在是每个被调用5次。打开消费者工程:1、自定义算法类必须继承AbstractLoadBalanceRule类启动类在com.bruce.springcloud包下,所以我们新建一个包:

  • 142. 环形链表 II(链表)[通俗易懂]

    142. 环形链表 II(链表)[通俗易懂]给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部

  • 从零开始学习Prometheus监控报警系统[通俗易懂]

    从零开始学习Prometheus监控报警系统[通俗易懂]Prometheus是一个开源的监控报警系统,它被纳入了由谷歌发起的Linux基金会旗下的云原生基金会,并成为仅次于Kubernetes的第二大开源项目。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号