整理有关面试普遍问题和回答技巧 (持续更新~)
在面试过程中没有完美的答案,或许只有的一个清晰的解题思路,问题讲清楚别人听懂了,或许这才是面试的最好体现。还有面试不通过并不是你不优秀,只是你当时没组织好你的思维去展现你的优秀。不要紧,整理好去下一家。
问题一:如何解决接口访问慢的问题?#
答:这个问题大家可能在工作中经常碰到,做功能开发的或许思维点没打开,会停留在业务点上面,或许一时解决了,过段时间又会出现....
面对这样的问题,我们从哪个点开始呢?从代码?业务流程?浏览器 dedug? ... 都不是。这里我们从 日志 / 数据 去分析。首先我们要知道,我们的项目架构,不要局限于框架。我们要从大的整体范围,操作系统 (Linux),服务器 (Nginx),MySQL,PHP 等要素出发,这些都是看得见的东西,但里面的构成关系是复杂的 (LNMP)。到这里或许思路开阔些了。刚说到日志、数据我们就从 LNMP 日志数据展开。
Linux:我们主要关注 磁盘 IO、网络 IO、内存消耗、CPU 负载的压力等,可以用 top
, ps
命令观察服务器状态,看看到底哪里出了问题,具体问题具体分析。
MySQL:我们从观察进程状态,开启慢日志,分析执行语句等方面查看日志和数据分析,这里可以具体展开说明。
Nginx: 我们可以查看服务器具体响应状态码 (500,502,503..),查看错误日志来分析。
PHP: 使用 PHP-fpm 的慢执行日志 slow_log 来分析,而不是仅限于功能代码。
通过这样的分析,我们大致从根本上解决了问题。有了这些数据的分析,才有那些业务流程、功能场景的解决方案 (用缓存,用队列,异步框架) 来做优化。日志分析具体细节方法肯定还有很多,这里就不具体展开了。感兴趣的同学可以在白纸上写写画画,然后进行归类总结。以便提高自己解决问题的思维。
问题二:InnoDB 和 MyISAM 的不同之处#
从一下从下面几个方向去介绍:
特性:
事务的支持:(InnoDB 支持事务、MyISAM 不支持事务);
锁粒度:(InnoDB 行锁应用、MyISAM 表锁);
存储:
存储空间:(InnoDB 既缓存索引文件,又缓存数据文件,MyISAM 只能缓存索引文件);
存储结构:(MyISAM:数据文件的扩展名为.MYD myData,索引文件的扩展名是.MYI myIndex;InnoDB:所有的表都保存在同一个数据文件里面,即.Ibd)
功能:
备份:InnoDB 支持数据热备份和安全恢复,MyISAM 不支持。
统计记录行数:(MyISAM:保存有表的总行数,select count(*) from table
会直接取出该值;InnoDB:没有保存表的总行数,select count(*) from table
会遍历整个表,消耗相当大)。
问题三:MySQL 有哪些索引类型?#
可以从三个角度去谈:
数据结构角度:可以分为 B-tree索引
、hash索引
、fulltext索引
(InnoDB、MyISAM 都支持)。
存储角度:可以分为聚簇索引与非聚簇索引。
逻辑角度:可以分为主键索引、唯一索引、普通索引、复合索引、外键索引。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: