Karp

My 2017面试问题归纳笔记
今天挺激动的在智联上简历挂了很久很久,一直没什么公司理我就在前天收到了面试邀请。今天下午去面试了, 笔试题比较简单...
扫描右侧二维码阅读全文
15
2017/02

My 2017面试问题归纳笔记

今天挺激动的在智联上简历挂了很久很久,一直没什么公司理我就在前天收到了面试邀请。
今天下午去面试了, 笔试题比较简单但也有我不会的问题。

下面简单描述下笔试题:

一道是 intval() strval() boolval() 分别是做什么用得 这里我说下 boolval() 一直没用过所以也不记得有没有这么个函数,但字面意思就明白了

还有一道笔试是 TRUNCATEDELETE 之间有什么区别:

TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。
但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。   
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

百度了一下 得到上面的答案, 问题是TRUNCATE 一直都没用过,实际上DELETE 在实际应用中也是极少的,谁没事删库玩呀。

再说下面试中遇到的问题,问的我真是懵逼了,下面说下问题有大神可以帮我解答下:
1、 自我介绍(介绍了下我自己的工作经历)

2、 有100M的文件内部内容都是单行保存的,问如何将数据导入数据库。
这个问题找到了很好的解决方案 php 自己也提供了协程 yield 可以有效减少内存的使用

function getLines($file) {
    $f = fopen($file, 'r');
    try{
        while($line = fgets($f)) {
            yield $line;
        }
    } finally {
        fclose($f);
    }
}

$file = 'test.txt';
foreach (getLines($file) as $key => $value) {
    echo $value;
}

第一感觉是使用mysqldump 导入, 但人家指的不是sql文件。再就是100M的文件如果用php 直接读取会存在内存溢出问题...

3、 资讯类网站导航栏建立三级导航,每级导航50个,问如何建立表(1张表)

我蒙了,当时没想到好办法,只想到惰性加载,点击时触发一次关键字查询,但让我建立一张表,我还是想不到。 面试官告诉我一个最简单也是最low的方法,使用脚本预先跑出所有的导航栏分级的情况,存起来,然后同步到缓存中。跟我说方法有很多这个最low的方法,在不懂专业技术的情况下也可以想到的。(啪啪 脸疼)

4、 百万级别的数据库如何进行优化 (没有实际场景)
我问了下什么类型的数据,是热数据还是什么数据。 面试官答部分数据类型, 我答假设是访问日志类型的数据,可以通过水平切分将数据两减少,根据时间做水平切分,再代码上使用规定逻辑处理分库, 数据量增大可以采用分库的策略,做读写分离和主从复制,当然最行之有效的是做缓存。 我不会上来就说分库分表,那样是很愚蠢的。主要还是需要根据数据库的业务进行优化。因为数据上百万了,不可能什么优化都没做 像什么加索引这类问题我都没说。

5、 主从不一致问题 如何解决

懵逼状态 主从我的应用场景都仅限于本地虚拟机....

找到答案 :
方法一:忽略错误后,继续同步
该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
方式二:重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
详细解决方案 请访问 2种方法解决mysql主从不同步
6、 数据库和缓存不一致问题 如何解决
先删除缓存在更新操作, 基本可以防止缓存不一致. 如果仍存在不一致就用脚本异步处理.

7、 如何时间会话共享(session共享)

就这个我是答上来了, 可以通过php.ini 设置或在入口文件设置 ini_set 设置,再就是php本身有提供session的操作接口,可以自定义重写session的操作,详情请查看 【session共享问题】

8、 用过phalcon 你都了解他都用C封装了哪些东西吗?

真心没了解, 这个问题暂时没打算研究

9、 namespace 的作用, 在框架中使用命名空间都有哪些风格和规范

这问题我对我的回答不是很满意, 我回答是主要的作用就是用来防止文件重复包含的,在框架中命名空间再就是起到见名知意的作用,例如看到命名空间中Controller,model 我就知道分别代表控制器和模型文件。
对于命名空间的作用、风格、规范希望能有更好的答案

对了说了个名词 我查下 APC(听都没听过)

APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。

还是从业时间太短呀,缺少项目经验。 上面 的 9个问题 仅是面试后我自己还记得的问题。实际面试了近1小时的时间。 对自己的表现非常不满意,准备不充分,也充分看到了自己的不足之处,对于很多场景下的解决方案都缺少了解, 面试时大脑反应不灵活。

上述问题 我会自己取实践并补充答案,如果有看到的朋友也可以帮我答疑,感激不尽 ^ v ^

最后修改:2017 年 03 月 13 日 02 : 19 PM

发表评论