整理有关面试普遍问题和回答技巧 (持续更新~)

在面试过程中没有完美的答案,或许只有的一个清晰的解题思路,问题讲清楚别人听懂了,或许这才是面试的最好体现。还有面试不通过并不是你不优秀,只是你当时没组织好你的思维去展现你的优秀。不要紧,整理好去下一家。

问题一:如何解决接口访问慢的问题?

答:这个问题大家可能在工作中经常碰到,做功能开发的或许思维点没打开,会停留在业务点上面,或许一时解决了,过段时间又会出现....

面对这样的问题,我们从哪个点开始呢?从代码?业务流程?浏览器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 协议》,转载必须注明作者和本文链接
欲速则不达
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

感谢分享 :smile: :smile:

1年前 评论
╰ゝSakura

考官来一句,如何支持高并发???

1年前 评论
小李世界 1年前
易水 1年前
╰ゝSakura (作者) 1年前

@╰ゝSakura 已经回答你了如何支撑高并发。仅供参考。有更好的,希望可以给出建议。

1年前 评论
╰ゝSakura 1年前

今年自己在三个时间段面试了大概10家公司,这些问题都问到过,自己也在其中一家公司担任面试官面试过不少人。有相当一部分人不屑于回答这些问题,当然,这一部分人中绝大多数也不屑于回答任何关联知识点的问题。我时刻告诫自己,不要把工作中的那点成果当成是自己技术的全部,多学一点、多了解一点,不至于在复杂的需求和比较高要求的场景下,自己手足无措。

1年前 评论
vasar (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!