本人最近离职换工作,面试了几家,记录下面试经历,以便查漏补缺。
本人工作经验2年,求职岗位是PHP。
1 杭州蜂融 3.19 GG
面试我的应该是一个leader,面得一般,本人好久没面试,感觉没抓住很多点。挂了。
1.1 mysql 如果表里有几亿条数据 分页怎么快速跳转到指定的页面
答了用主键ID,面试官说是用最小ID,没答好。
1.2 Redis 是单进程为什么能这么高效
忘记了。I/O复用。
采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求
1.3 用伪码写个冒泡排序
比较简单,冒泡核心就是,交换,一次循环确定一个位置。
1.4 看到有用过Elasticsearch,问了ELK L层怎么写入数据的
挂。没用过,平时开发只用到es的日志查询接口。
以后还是研究下吧。
1.5 Linux常用命令
答了 cat tail top ps file 其实有很多命令一时间忘记了。
cat tail top ls file pwd cp mv df ....
面试后面有点紧张一时间想不起来了,可能这就是菜吧。。。。
大概是这些,感觉问题不难,没有复习到位,还有自己在面试语言组织不是很好,火箭造不动,还是要好好复习。
2 小码王 3.20 GG
上来就是笔试题,填表然后面试,面试官看上去就很厉害,果然这次面试就凉了。
先根据笔试题问的:
2.1 mysql int(1) int(11) 的区别
int(11) 是指的显示宽度, 跟数据的存储和计算没有影响( ZEROFILL 除外 )
没答上 ZEROFILL 这个点
2.2 用不超过5行写一个方法判断 时间字符串 是否符合
function chekTime($str) {
//todo
}
有点忘记了怎么写的 感觉是用 strtotime
所以没多想,填的是
return strtotime($str)
面试官问 这个写法是否有问题,我对这个方法异常参数没用过,答得不好,感觉他不是很满意
回来查了 strtotime 的文档 ,发现在 PHP 5.1.0 之后解析失败是返回 FALSE ,所以应该要判断下而不是直接返回。不该错。
if (strtotime($str)) {
return true;
} else {
return false;
}
2.3 单例模式的使用举例
问的是公司的单例模式的应用有哪些,公司代码底层的单例还真没注意,有点疏忽了,答了个mysql连接使用的单例,答得不好,单例在laravel中有 任务调度、异常捕获。
2.4 接 2.3 问mysql在 nginx 使用的连接方式是fpm还是什么
不知道。查波google没结果,不知道问的是啥。
2.5 var_dump(intval(0.58 * 100)) 还有没有其他结果
笔试答案我填的是 int 58,我答得不够自信,所以质疑了一下,应该是答错了。
intval ( mixed base = 10 ] ) : int
通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
正确结果是 int(57)
,看样子得研究一波原因了。
直接输出 intval(58)
发现结果是 int(58)
,所以问题是 0.58 * 100
, 输出 var_dump(0.58 * 100)
结果是 float(58)
, 根据 intval 的文档说明,返回的是 var 的 integer 值, 所以 int(57)
原因是 相乘之后的精度丢失,考察的是对这个精度问题的解答,如果改成 intval(bcmul(0.58, 100))
结果就是58了。这个坑没了解过,涨知识了。
这个公司算是挂了,问的问题目前很多都没涉及到,不过学到了不少,不亏。
github: Github
个人博客: 个人博客