mysql

1、谈谈你在写sql语句需要注意有哪些点?

答:

  1. select * 问题,客户端需要什么,就给什么,不要给多余的字段,这种情况可能还会导致本来可以走覆盖索引的语句不能走覆盖索引。

  2. 不要在查询语句字段上做函数运算,这样会让索引失效。

  3. 一定要避免mysql自动类型转换,比如 where ‘9’ =9。

  4. 能不设置允许 null 的字段尽量不要设置,因为 null 会导致 mysql 多一层判断。

  5. 使用 like 的时候如果是通配符 % 在最前面的话也会走的全表扫描。

欢迎补充。

2、你刚才一直在提索引,把你知道的关于索引的一些技巧说下

答:

  1. 要在区分度高的字段上建立索引,否则索引意义不大。

  2. 字符串建立索引要注意大小,索引长度过长,占用的空间也就越大,适当的可以截取进行索引,缺点是不能使用到覆盖索引,具体根据业务合理安排。

  3. 建立联合索引要知道最左前缀原则,举个例子( name, email, phone ),最终能走这个联合索引的一定只会是 ( name ),( name, email ),( name, email, phone ),其他只能走全表,需要根据业务合理设置联合索引的顺序。

3、索引底层是什么数据结构?

答:B+树。

4、为什么用的是B+树,不能使用红黑树或者其他的?

答:可以使用红黑树。但是这样的话可能会造成树的高度过高,意味着相同查询下,会进行更多的磁盘I/O,影响性能,而 B+ 树可以保持树的高度不至于过高。这道题答得不是很好,不仅仅是这样,欢迎补充。

5、你知道索引下推吗?

本质上是对普通索引需要回表的一种优化,也就是引擎层在对索引指针遍历的过程中,先做一些优先的判断,过滤掉不符合条件的,可以减少磁盘IO。

6、假设现在有人操作数据库,不小心执行错了语句,误删除了很多数据,这时候能恢复吗?咋么恢复。

答:首先,一定要开启 bin-log ,如果没有开启的话,可能就恢复不了。要看具体的文件系统是否能恢复。开启了 bin-log ,类型设置要设置成 row 或者 mixed ,不能设置 statement 。然后,如果是误删行的话,就可以把里面对应的删除事件换成插入事件,在备用库上执行。如果是误删表的话,可以先获取最近的一次全量备份,放到备库,然后拿出 bin-log , 除了不执行删除的事件,其他事件依次重放。

7.为什么不能设置成 statement ?

答:设置成 statement ,实际 bin-log 存储的是 sql 语句( 非具体删除的主键id ),这样如果是主从架构的话,主和从可能因为选择的索引不一样而导致主从不一致。

8.你刚才说到主从,那你说说主从运行的机制吧

答:首先主库还是要开启 bin-log , 从库先设置要连接的主库 change master…… 然后执行 start slave,这时候从库会创建两个线程,一个 io_thread ,主要负责连接主数据库。一个sql_thread 主要是负责执行中转日志语句。首先,主库接收到从库的同步请求,根据传递的 bin-log 文件名和开始同步的位置,发送二进制文件给从库,从库 io_thread 负责把接收到的数据放入到中转日志,然后 sql_thread 负责从中转日志读取解析执行,执行完成,更新同步的位置标志。

9.你知道主从延迟吗?有些时候延迟的时间还会很长。遇到这种情况咋么办?

答:这种问题,注意了。划重点。问你出现问题,寻找解决方案的时候,一定要对症下药,也就是说这个问题你可以这样考虑,什么情况下导致的主从延迟。

  1. 如果主库和从库服务器配置不一样,从库的差点,那么就可能导致延迟时间加长。这时候,换成相同的服务器配置服务器即可。

  2. 从库压力太大了。一般主从了,从库基本用来查询,比如可能运营或者开发者自己都在从库上进行一系列的 sql 操作。那简单呗。多配几个从库,分摊压力,一主多从。

  3. 大事务。比如 delete 这种语句 不 limit 限制一下,如果数据量过大,导致主库运行时都花费了长时间,再同步到从库,这个时间间隔过长。

设计模式

你知道哪些设计模式,你平常有使用到吗?可以结合你的业务场景说下吗?

答:这里我先举例平常使用 Laravel,里面就用到大量设计模式,比如门面,组合,装饰,观察者…… 具体场景带入,然后根据之前业务上的场景说了下……., 最后也说了设计模式不是银弹,只有在合适的场景使用合适的模式才能体现它的价值。

手写算法

给定一个已排序的数组和一个指定值,返回指定值在数组中的下标位置,如果不存在,返回把给定值插入到数组之后的下标位置。注意时间复杂度。

比如给定有序数组 [1,3,5,6] 给定值5.那么返回下标2.

给定有序数组[1,3,5,6] 给定值 7,返回下标4.

答:

function searchInsert($nums, $target) {if (!count($nums))  return 0;$l=0;$r = count($nums)-1;while ($l <= $r){$middle = $l + (($r - $l) >> 1);if ($nums[$middle] == $target) return $middle;if ($nums[$middle] < $target){$l = $middle+1;}else{$r = $middle-1;}    }return $l;
}

典型的可以使用二分,时间复杂度 O(log2n)。空间复杂度O(1)。

网络

1、传输层主要有哪些协议?

答:主要有 TCP 和 UDP 协议。他们的区别是 TCP 是需要连接的 会经过三次握手,而且可以保证消息的可靠性。UDP 是不需要连接的,不保证消息的可靠性。

2、你能大体说说 TCP 的三次握手吗?

答:首先服务器监听某个端口,客户端发起请求 携带syn数据包(第一次),服务端接收到这个数据包,返回 syn/ack 的数据包给客户端(第二次),最后客户端再次发送一个 ack 的数据包(第三次)。

3、为什么需要三次握手?

答:主要是为了确认双方接收是否正常。

第一次:客户端什么都不能确认。服务端能确认客户端的发送正常,自己的接收正常

第二次:客户端能确认自己的发送和接收正常,服务端的发送和接收正常。服务端能确认自己接收正常,客户端的发送正常。

第三次:全部都能确认了。

并发

假设现在有多个入口可以同时使用一个账户操作,这个账户只有十块钱,有哪些方法可以使得不超扣消费?开放性题目,只要能解决问题的就是好方案,没有唯一答案。

答:mysql:可以直接 where amount>=current_amount and amount>0 …… , 或者悲观锁 for update。redis:lua 脚本。php 层面可以利用文件锁,还可以使用队列的特性,只有一个消费的出口。

设计

如果我们公司有很多项目都有登录的功能,咋么设计?

答:需要把这个登录单独抽出来作为一个模块开发,类似于登录中心,所有的其他子系统登录都需要从这个系统中认证。

其他

1、看你项目里说到使用过swoole,也写点go,你可以说说他们协程上的区别吗?

答:设计上他们是一样的,主要区别在于,协程调度器模式。swoole 的协程调度器是单线程,go 的协程调度器是多线程。这就意味着,同一时刻 swoole 只有一个协程在运行,而 go 同一时刻可以多个协程在运行。所以在 swoole 协程中不需要对全局变量进行加锁。而且 swoole 本质是单线程多进程的,意味着它没有超全局的变量,仅仅是进程级别变量。而 go 多线程,多线程必然会存在临界变量锁的问题。当然,go 也提供了开箱即用的 sync 读写锁,或者你也可以直接使用通道来代替。

2、你可以说说 go 的 gmp 调度模型吗?

答:巴拉巴拉半天,自己都觉得没说清楚,好吧,我不是很了解。此时猜测面试官心里,早说不知道不就完事了吗

3、说说你们这个项目最难的点是哪个地方,你是咋么解决的?

那就要看你自己对项目的掌握程度以及这个项目的含金量了。

点关注,不迷路

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。之前说过,PHP方面的技术点很多,也是因为太多了,实在是写不过来,写过来了大家也不会看的太多,所以我这里把它整理成了PDF和文档,如果有需要的可以

点击进入暗号: PHP+「平台」


更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的 PHP技术交流群

最新整理的PHP高级面试题来啦!【附答案】相关推荐

  1. 2020Android 高级面试题总结(附答案解析)

    3.一个对象的创建过程 答:例如有一个Dog类: 1.即使没有static,构造器其实也是静态方法,所以当首次创建Dog时或者Dog的静态域或者静态方法被访问的时候,Dog的class对象会被加载. ...

  2. python面试题及答案-50道Python面试题集锦(附答案)

    原标题:50道Python面试题集锦(附答案) Python是目前编程领域最受欢迎的语言.在本文中,我将总结Python面试中最常见的50个问题.每道题都提供参考答案,希望能够帮助你在2019年求职面 ...

  3. Java程序完形填空题_大学英语六级完形填空试题考前冲刺附答案

    大学英语六级完形填空试题考前冲刺附答案 攀登科学文化的高峰,就要冲破不利条件限制,利用生活所提供的有利条件,并去创造新的条件.以下是小编为大家搜索整理的.大学英语六级完形填空试题考前冲刺附答案,希望对 ...

  4. 计算机组装与维修问答题答案,计算机组装与维修试题精选(内附答案).doc

    计算机组装与维修试题精选(内附答案).doc 计算机组装与维修试题精选? 一.?填空题?? 1.一个完整的计算机系统是由(?)和(?)两部分组成的. 2.?冯·诺依曼结构计算机主要有(?).(?).( ...

  5. 大一大学计算机考试题库,2017年大学计算机基础试题库「附答案」

    2017年大学计算机基础试题库「附答案」 一.选择题 1.世界上公认的第一台电子计算机诞生的年代是( ). A.1943 B.1946 C.1950 D.1951 2.构成CPU的主要部件是( ). ...

  6. React高频面试题总结 (附答案及原理代码)

    React高频面试题总结 (附答案及原理代码) 1.说说对React的理解?有哪些特性? 1.React是用于构建用户界面的JavaScript库,只提供了UI层面的解决方案,遵循组件设计模式.声明式 ...

  7. 常见JavaScript基础面试题上(附答案)

    常见JavaScript基础面试题上(附答案) 1.JavaScript有哪些垃圾回收机制? 有以下垃圾回收机制. 标记清除( mark and sweep) 这是 JavaScript最常见的垃圾回 ...

  8. 计算机组成知识试题及答案,2015年计算机考研:计算机组成原理试题六【附答案】...

    2015年计算机考研专业课考试科目为:计算机组成原理.数据结构.操作系统以及计算机网络等,需要大家记忆的东西很多,但是更重要的还是要理解,融会贯通才能够把题做好,把问题解决.新东方在线小编分享计算机组 ...

  9. 2019全国c语言二级考试题库,2019年全国计算机二级考试试题题库(附答案)【精选】.docx...

    --WORD格式--可编辑-- --- 2019年全国计算机二级考试试题题库(附答案) 一.选择题 ((1)-(40)每小题 1 分, (41)-(50)每小题 2 分,共 60 分 ) 下列各题 A ...

最新文章

  1. 企业的核心竞争力是什么
  2. write up 杂项:telenet
  3. 计算机指令格式哪几部分组成,计算机的指令格式,通常是由()两部分组成。 - 百科题库网...
  4. wat java_并发工具优于wati、notify(69)
  5. 命令行shell 用于SQLite
  6. mysql5.7 glibcxx_3.4.15_Percona Server安装可能出现的问题 version `GLIBCXX_3.4.15' not found ...
  7. Wpf 使用x命名空间的ClassModifier
  8. 2010谷歌校园招聘笔试题
  9. FlightGear编译
  10. 掌握QCC推行方法,为企业创造经济效益
  11. Scientific Reports|比较转录组分析揭示了杀菌剂氰烯菌酯对尖孢镰刀菌的抗性调控机制和杀菌活性
  12. 如何提高淘宝新店店铺关注量方法技巧
  13. 元数据管理技术--Atlas
  14. dsp6657的helloworld例程测试-第一篇
  15. 名茶事典——【贡(寿)眉】
  16. php tp5生成条形码,thinkphp5 + barcode 生成条形码的方法
  17. 总结:IOTA反驳DCI实验室提出的漏洞荒谬至极
  18. 【小强推歌】---Shania Twain 经典歌曲收藏
  19. Buffer透视:duplicate(),slice()等
  20. 基于树莓派4B搭建64位树莓派系统

热门文章

  1. hdu 3999(二叉排序树)
  2. 虚拟服务器安装流程,虚拟主机安装WordPress教程,小白虚拟主机WordPress安装教程,流程很详细...
  3. 计算机模拟及其应用,浅析计算机虚拟仿真技术及其应用
  4. 怎样在M1 Mac上安装iPhone或iPad应用程序?
  5. 如何写一份不错的CSS代码?
  6. 安装并在VSCode中配置Code Fira
  7. 【干货分享】流程DEMO-费用报销
  8. Mac键盘被锁住了的解决方法
  9. 物流 快递信息查询接口(阿里快递物流接口案例)
  10. 2023天津师范大学计算机考研信息汇总