前言
之前有很多朋友都去现今主流的大型互联网公司面试(阿里巴巴、京东、美团、滴滴等),面试回来之后会他们会发给我一些面试真题。本文面试真题是我总结下来的经验,希望对大家有帮助其实我本来没想写这篇文章,因为自己的记忆力不是很强,不像记忆力强的人,面试完后,几乎能把自己和面试官的谈话记下来。我当初面试完后,除了记住一些聊过的知识点以外,具体的内容基本上都忘得一干二净,所以写这篇文章还是花了一些心血的。
Q1、第一个问题关于弱类型
正确运行的输出结果:
strpos是返回字符串str2在str1的位置,没有找到则返回false然而实际上这次返回了而在if语句中0也被当作false,所以我们需要对false做类型判断,正确的代码如下:
需要注意的是我们使用了!==,在php和JS中=!相对==更为严格需要要求数据类型一致。
Q2
下面的输出结果会是怎样?
实际运行结果是:
关于$x++和$x--这个问题其实非常容易遇见,我们只需记住$x++使用最近的值,然后才自增。
运算符的优先级,++是明显高于+,因此先执行++再执行+。关于运算符的优先级,有的时候我们真的可以通过括号来让我们的程序更让人直观的了解,毕竟代码不光是用于执行的,有的时候或许团队的可读性也是提高效率的一种。
Q3
关于变量的引用;
请问$a$b的值各位多少
部分第一时间会想到$a=1$b=21,仔细一看$b=$a,这里$b是变量$a的引用而不是直接赋值。
Q4
下面是true还是false
var_dump(==);//false
,PHP会默认把当作8进制来处理,实际转化为10进制就是83,显然这不是相等的。
var_dump(==);//true
这里php会非常有趣的将’’转换成一个数字而且默认去掉了前面的0也就是
==
var_dump(===);//false
很显然上面的问题已经说过了数字和字符串类型不一致。