面试问题
来源:互联网 发布:strider军刀 淘宝 编辑:程序博客网 时间:2024/03/28 18:15
1.字符串"0"在PHP和js中转换为布尔值是false还是true
php:false; php 弱语言
'0'
和0一样;
js:true;字符串除了空字符串(
''
)其他都是true(包括
' '
这种中间有空格的);
2. echo,print_r ,print,var_dump 区别 echo() 实际上不是一个函数,是php语句,而且echo是返回void的,并不返回值,所以不能使用它来赋值。 不用括号的时候可以用逗号隔开输出多个值,但是没有换行和不能隔开
print:也不是是函数,有返回值但终是1, echo的速度要比print快 print_r:能打印数组,对象 var_dump:能打印对象数组,并且带数据类型
3.$_SERVER常量中常用的参数
$res = $_SERVER['REMOTE_ADDR']; //客户端IP地址 $res = $_SERVER['SERVER_ADDR']; //服务端IP地址 $res = $_SERVER['SERVER_NAME']; //服务端信息 $res = $_SERVER['SERVER_SOFTWARE']; //客户端信息 $res = $_SERVER['SCRIPT_FILENAME']; //当前文件的绝对路径 //http://localhost/map/index.php/home/Interview/Index $res = $_SERVER['REQUEST_URI']; //页面的URL地址 ///map/index.php/home/Interview/Index $localip = $_SERVER["REMOTE_ADDR"]; 或者:getenv('REMOTE_ADDR'); $serverip = $_SERVER["SERVER_ADDR"]; 或者: gethostbyname('www.baidu.com');4.获取服务器IP地址和本地IP地址的方式
4. mysql联合索引index_a_b_c(a,b,c) charset=utf8,a int(10),b varchar(10),c tinyint(1),问条件where a = 5 and c = 1用到的索引长度。
索引长度:4+1 = 5 (用到a,c)
where a=5 and b = "hahah";
索引长度:4+10*3+2 = 36 (用到a,b)
5.json和jsonp的区别,什么时候用。
jsonp 跨域请求的方式
6.写出点击一个div出现相应的序号的js
7.session和cookie的区别和联系
如果禁用了cookie,那要怎么实现session?通常会采取一种叫做“URL重写”的方式来实现session,也就是以类似于GET方式,将session_id写在URL的后面,这样服务器也能获取到客户的session_id,通过这个独立的id就能识别特定的用户了。
8.PHP实现遍历出文件夹和他下面子文件的代码
1. <?php2. $dir = '/Users/zhaoning/Desktop/算法';3. 4. function getAllFile($dir){5. $allFileArr = array();6. if (is_dir($dir)) {7. $res = opendir($dir);8. while ($row = readdir($res)) {9. if ($row == '.' || $row == '..') {10. continue;11. }12. if (is_file($dir.'/'.$row)) {13. $allFileArr[] = $row;14. }else if (is_dir($dir.'/'.$row)) {15. $allFileArr[$row] = getAllFile($dir.'/'.$row);16. }17. }18. closedir($res);19. }20. return $allFileArr;21. }22. var_dump(getAllFile($dir));23. ?>
9.写出匹配html标签的而不匹配div span img的正则表达式
10.写出下面正则表达式的含义
$ ^ [^] ? ?:
11.PHP中this和self的区别
this:对象
self:类
12.如何防止SQL注入,XSS攻击和CSRF攻击
SQL注入:mysqli_real_escape_string()转义关键字符;
要严格检测用户输入,比较说如果是纯数字的要检测是否是纯数字 或者用正则判断, 再然后要过滤和转义一些特别字符,可以使用php自带函数 addslashes()或者mysqli的函数 mysqli_real_escape_string()函数过滤那些 # --(空格) 这些在sql语句中是注释的特殊字符 最后 你可以使用预编译的方式去防止sql注入
XSS攻击:alert把一些cookie信息打印出来;过滤掉<>等关键字符串
CSRF攻击:跨站攻击。防止:token,验证码
13.Linux的命令:查找出文件名后缀是.txt的,内容包含delete的文件,并删除
1. find / -name "*.txt" | xargs -n1 -I(这是i) 'xxx' grep -l(这是L) 'delete' 'xxx' | xargs -n1 -I 'zzz' rm -f 'zzz'
14.PHP解决多进程读写一个文件的方法
1. function putFile($file,$mode="w"){2. $file = fopen($file,$mode);3. if(flock($file,LOCK_EX)){4. fwrite($file,'write a word');5. flock($file,LOCK_UN);6. }else{7. echo "无法访问";8. }9. fclose($file);10. }
15.数据库表的引擎有哪几种?区别和场景
MyISAM:多用于select
Innodb:事务
memory:内存中,存储快
merge:用于日志和数据仓库
archive:用于日志,只有select和insert,不支持索引。
16.nginx和PHP的工作原理
17.ES连接PHP的扩展叫什么名字
elasticsearch
18.调用接口需要什么,签名怎么生成的,登陆接口的实现
签名:( token + 时间戳 ) 加密 = sign
19.接口返回包含哪几部分。
1. {2. code:3. msg:4. data:{}5. }
1.不知道什么的英文
2.PHP错误种类.
1. 注意(Notices)
这些都是比较小而且不严重的错误,比如去访问一个未被定义的变量。通常,这类的错误是不提示给用户的,但有时这些错误会影响到运行的结果。
2. 警告(Warnings)
这就是稍微严重一些的错误了,比如想要包含include()一个本身不存在的文件。这样的错误信息会提示给用户,但不会导致程序终止运行。
3. 致命错误(Fatal errors)
这些就是严重的错误,比如你想要初始化一个根本不存在的类的对象,或调用一个不存在的函数,这些错误会导致程序停止运行,PHP也会把这些错误展现给用户。
屏蔽PHP错误提示
方法一:在有可能出错的函数前加@,然后or die("")如:
@mysql_connect(...) or die("Database Connect Error")
方法二:编辑php.ini ,查找"display_errors =" ,将“=”后面的值改为"off。
方法三:在php脚本前加error_reporting(0),屏蔽所有错误提示。
其中,error_reporting 配置错误信息回报的等级。
3.var_dump(0123==123);var_dump('0123'==123); false true
4.36个人,6个赛道,没有秒表,比赛多少次能够得出前三名?
5.正方形四个角有四个虫子,虫子沿边走,问:虫子相遇(两个碰头)的概率是多少?
6.A去买水果3.5斤共14元,给老板B 20 元 ,B没零钱,找隔壁C换20元,回来后找A 6元,C发现这个钱是假的,找B,B又给C 20 元。问:B一共亏了多少钱。
7.快排
8.同一个ip,10分钟能只能访问5次
可以获取到他的ip地址 然后记录他上次登录时间 然后再去判断是否登录间隔时间
9.设计微博粉丝互粉,用户1亿。
问答:
http协议包含几部分。
接口是怎么实现的。
token 是怎么生成的。
你知道哪些加密。
单项 对称 非对称 MD5() crypt() sha1() url编码加密 base64加密
如何防止http包的数据篡改。比如说转账10块,http包被劫,改成100块了。
加密
针对有项目经验的面试梳理:
1.自我介绍。
在哪工作,多长时间。做了什么东西,项目背景,用到的技术,负责什么工作。
答案:之前在滴滴打车工作,工作半年多。参加的项目有谷雨移动和司机帮。谷雨移动是(移动端)为汽车租赁公司提供管理旗下快车的软件。主要用的PHP+redis+ES。我主要负责服务分和各项报表的查询和汇总。司机帮主要是面向快车司机的,司机能够查看自己的流水和服务分,服务时长等各项数据。我主要负责服务分的排名。
redis和memcache的区别?
Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。
Redis支持主从模式,可以配置集群,这样更利于支撑起大型的项目,这也是Redis的一大亮点。
问:redis起什么作用?
减少访问es的次数
懒加载(访问redis没有数据,然后去查ES,把结果导入数据redis里面)有什么弊端?
数据不同步的问题。
怎么解决数据不同步?
1.把懒加载换成定时跑数据。
2.从ES里面读取近期是否有数据变化,如果有从新读取ES。没有的话在还用原来的redis里面的数据。
2.apache和nginx的区别
工作模式:
apache 有两种模式perfork,worker模式
perfork:
worker:
nginx的epoll和select:
epoll:模式单线程异步非阻塞。
select:选择性的
3.Innodb和My ISAM的区别
MyISAM:
支持全文索引,
不支持事务。
存储结构:三个文件,一个数据文件,一个索引文件,一个表文件。
表级别的锁。
Innodb:
不支持全文索引,
支持事务。
存储结构:所有表同一个文件。
行级别的锁。
4.hash索引和b+tree索引的区别
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 面试问题
- 51Nod-1073 约瑟夫环
- ip地址转化为其他进制
- JWT.net操作实践
- jenkins 对 maven对应的 jvm 配置参数
- JPA 主键@Id、@IdClass、@Embeddable、@EmbeddedId
- 面试问题
- 宏和函数小记
- 大数据未来应用7大趋势 人工智能只占其一
- 下一步
- 有趣的思路题集锦from bzoj/codefoces(乱搞)
- 鸡的选择问题--回溯法
- while,do-while,for循环特点区分
- 欢迎使用CSDN-markdown编辑器
- scrollTop回到顶部详解