大杂烩
1、mysql text字段不能设置默认值
2、url匹配正则表达式
!preg_match('/^((ht|f)tps?):\/\/([\w\-]+(\.[\w\-]+)*\/)*[\w\-]+(\.[\w\-]+)*\/?(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?/',$url)
3、访问www.xxx.com全过程
首先通过域名找到IP地址,如果缓存里没有就要请求DNS服务器;得到IP地址后开始与目的主机进行三次握手来建立TCP连接;连接建立后进行HTTP访问,传输并获取网页内容;传输完后与目的主机四次挥手来断开TCP连接。
4、TCP/IP
5、主从怎么实现的
当主库更新(增、删、改)数据后,会实时的写入到二进制日志文件(binlog日志)中。从库的IO线程,实时的监听主库的二进制文件,如果二进制文件发送了改变则启动线程进行读取修改后的内容,通过IO线程将读取的二进制文件写入到中继日志中(主要用来保存主库的更新信息),SQL线程实时读取中继日志中的消息,进行数据库的"更新操作"
6、502网关错误出现的场景
① DNS缓冲,解析不了域名(如访问facebook.com)
② 浏览器代理,或者DNS被劫持了
③ Web服务器问题
④ fastcgi设置过小
7、PHP7性能提升原因总结:
① 存储变量的结构体变小,尽量使结构体里成员共用内存空间,减少引用,这样内存占用降低,变量的操作速度得到提升。
② 字符串结构体的改变,字符串信息和数据本身原来是分成两个独立内存块存放,php7尽量将它们存入同一块内存,提升了cpu缓存命中率。
③ 数组结构的改变,数组元素和hash映射表在php5中会存入多个内存块,php7尽量将它们分配在同一块内存里,降低了内存占用、提升了cpu缓存命中率。
④ 改进了函数的调用机制,通过对参数传递环节的优化,减少一些指令操作,提高了执行效率。
8、cookie和session
9、redis常见的存储结构
string、hash、list、set、sorted set(zset)、pub/sub、transactions
10、事务隔离ACID
读未提交:当前事务能读取到其他事务尚未提交的修改值,最低级别,任何情况都无法保证
读已提交:当前事务能读取到其他事务已经提交的修改值,可避免脏读的发生
可重复读:一个事务在任何时刻查询到的结果跟事务一开始启动时查询的结果一样,可避免脏读、不可重复读的发生
串行:强行使所有事务串行执行,可避免脏读、不可重复读、幻读的发生
11、XSS/CSRF
12、mysql的索引类型
普通索引、唯一索引、主键索引(与唯一索引的区别是不能为空且只能有一个)、组合索引、全文索引
13、redis锁
incr自增锁、setnx锁、set锁
14、前后端分离跨域请求
JSONP、CORS(Access-Control-Allow-Origin)
15、http强制跳转https
nginx使用rewrite实现
16、TCP/UDP
TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。
UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。
TCP 和 UDP 的优缺点无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用。
17、大文件上传实现
18、composer
Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。
19、docker实现原理
20、rpc、2pc、3pc、paxos
21、双主问题
22、redis持久化
23、redis、mongodb、memcache
24、乐观锁、悲观锁
25、秒杀场景
26、闭包
27、try catch finally
28、interface abstract
29、PHP SPL
30、traits
31、魔术方法
32、操作系统
33、MySQL
【HTTP】
【计算机网络】 参考
- GET/POST 区别。
- UDP/TCP区别。
- TCP 三次握手。以及衍生出来一些列的 TCP 的问题:什么是 TIME-WAIT、为什么可以是三次挥手、为什么不能是两次握手、流量控制、滑动窗口、Nagle 算法、糊涂窗口综合症、拥塞控制、慢启动、拥塞避免、快重传、快恢复、长连接 VS 短连接、应用场景是什么。
- HTTP 1.0、1.1、2.0。
- 说一下 HTTPS 的流程、SSL 是什么、什么是非对称加密、对称加密、RSA 具体实现。
- OSI 七层模型是什么、都有哪些协议、TCP/IP 四层是什么。
- DNS、ARP 协议原理。
- 地址栏输入 URL 发生了什么。
- WebSocket 是什么。
- 一些网络安全问题、比如 DOS 攻击如何解决、DNS 欺骗如何解决、ARP欺骗、SQL注入、XSS、CSRF、iframe 安全问题、本地存储数据问题、第三方依赖的安全性问题。
- HTTP 是不保存状态的协议、那么如何保存用户状态。
- Cookie 的作用是什么、和 Session 有什么区别。
- Session 的实现机制是什么、分布式环境下有什么注意事项、如果注销 Session、设置 Session 的时长如何操作、默认时长是多少。
- HTTP 1.0 和 HTTP 1.1 的主要区别是什么。
- 各种协议与 HTTP 协议之间的关系。
- 请求转发、URL 重定向和包含有什么区别,如何实现。
- 如何判断远程机器上某个端口是否开启,项目中需要查看域名在本地的解析 IP ,如何操作。
【语言基础】
-
描述一下值传递和引用传递的区别。
-
请描述一下 static 关键字和 final 关键字的用法。
-
接口和抽象类的区别是什么。
-
重载和重写的区别。
-
面向对象的三大特性,谈谈你对 xx 的理解。
-
UTF-8 和 Unicode 的关系。
- UTF-8是Unicode的压缩,也就是编码
-
Set 和 List 区别、Set 如何保证元素不重复。
-
UTF-8 与 GBK 互转、为什么会乱码。
【锁】
-
锁类型
-
悲观锁 VS 乐观锁
-
可重入锁、 可中断锁、公平锁、读写锁
【MySQL】
-
什么是数据库事务、数据库事务的四个特性是什么。
-
请分别举例说明幻读和不可重复读、并描述一下它们之间的区别。
-
MySQL 的默认隔离级别是什么。
-
为什么要使用索引。
-
索引这么多优点,为什么不对表中每个字段都创建索引呢。
-
索引是如何提升查询速度的。
-
请说出你知道的索引失效的几种情况。
-
什么是聚簇索引与非聚簇索引
-
MySQL 索引主要使用的数据结构有哪些。
-
谈谈 MyISAM 和 InnoDb 实现 BTree 索引方式的区别。
-
什么是覆盖索引、请举例说明。
-
谈谈你对最左前缀原则的理解。
-
MySQL 中 InnoDb 和 MyISAM 有什么区别。
-
谈谈如何对SQL进行优化。
-
如何用 explain 分析 SQL 执行效率。
-
explain 显示的字段具体解释下。
-
请举出可能形成数据库死锁的原因、如何能避免死锁。
-
数据库中的乐观锁和悲观锁有什么区别、各适用于什么场景。
-
请结合你的开发经历,谈谈数据库中的乐观锁和悲观锁是具体如何被应用的。
-
索引的本质。
-
MySQL 存储引擎。
-
MySQL 索引
数据结构,B-Tree 和 B+Tree。
带有顺序访问指针的 B+Tree
索引的物理存储。
与 B-Tree 相比,B+Tree 有什么不同。
为什么 B+Tree 更适合做文件索引。
为什么不用 AVL 树或者红黑树做索引。
两种引擎的索引存储机制。
MyISAM 索引实现。
InnoDB 索引实现。
索引失效条件。
索引类型
哈希索引。
有序数组。
B+ 树索引(InnoDB)。
联合索引。
最左前缀原则。
覆盖索引。
索引下推。
【Linux】
-
linux 常用命令有哪些、分别举例。
-
查询 3306 端口占用情况的 linux 指令如何写。
-
netstat -ntulp | grep 3306 //查看所有3306端口使用情况
-
-
linux 查看某个 java 进行的进程号 pid、如何操作呢。
- ps -ef|grep 16923
-
进程通信方式。
-
进程、线程、协程。
-
进程调度算法。
-
Linux下的 I/O 模型。
-
用户态、内核态。
【算法】