今天挺激动的在智联上简历挂了很久很久,一直没什么公司理我就在前天收到了面试邀请。
今天下午去面试了, 笔试题比较简单但也有我不会的问题。
下面简单描述下笔试题:
一道是 intval() strval() boolval() 分别是做什么用得 这里我说下 boolval() 一直没用过所以也不记得有没有这么个函数,但字面意思就明白了
还有一道笔试是 TRUNCATE 和 DELETE 之间有什么区别:
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 ^