您的位置:首页 > 职场人生

自己面试遇到的问题

2019-03-05 21:35 113 查看

1.小程序token机制
从客户端获得的code换取openid 和session_key
https://www.jianshu.com/p/154a540cb728

2.防止SQL注入
https://www.cnblogs.com/shenbuer/p/7875419.html
ThinkPHP如何防止SQL注入?(理解)
(1)查询条件尽量使用数组方式,这是更为安全的方式;
(2)如果不得已必须使用字符串查询条件,使用预处理机制;
(3)使用绑定参数
(4)开启数据字段类型验证,可以对数值数据类型做强制转换;(3.1版本开始已经强制进行字段类型验证了)
(5)使用自动验证和自动完成机制进行针对应用的自定义过滤;
(6)使用字段类型检查、自动验证和自动完成机制等避免恶意数据的输入。

3.面向对象
http://www.php.cn/php-weizijiaocheng-391950.html
public:定义公共的成员属性或方法,任何地方都可使用
protected : 定义受保护的成员属性或方法,只允许类本身或子类使用
private : 定义私有的成员属性或方法,只允许类的本身使用

面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节。
面向对象有三大特征:封装性、继承性、多态性。
现在纯正的OO语言主要是 Java 和 C#,PHP、C++也支持OO,C是面向过程的。

$this和self、parent这三个关键词分别代表什么?在哪些场合下使用?
$this 当前对象
self 当前类
parent 当前类的父类
$this在当前类中使用,使用->调用属性和方法。
self也在当前类中使用,不过需要使用::调用。
parent在类中使用。

4.数组排序的函数
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序

5.MySQL索引
Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。
查询是否使用索引
explain
https://www.cnblogs.com/gdwkong/articles/8505125.html

6.linux命令
搜索文件名
1.命令格式:find 指定目录 [参数] 文件名
https://blog.csdn.net/u011815404/article/details/80720555

7.cookie禁用了,session还能用吗

https://www.geek-share.com/detail/2729080988.html

8.为什么 APP 要用 token 而不用 session 认证?
session 和 oauth token 并不矛盾,作为身份认证 token 安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全了。如上所说,如果你需要实现有状态的会话,仍然可以增加session来在服务器端保存一些状态

原文:https://www.geek-share.com/detail/2698302159.html
https://www.v2ex.com/amp/t/148426

9.对命名空间的理解
一般情况向,在一个php程序源代码文件或同一个请求中是不允许有两个以上相同名称的类名、常量名或者函数名的,这样的话,程序在运行的时候就会报错。但是,在很多实际情况下,我们是无法避免在同一个文件下有两个以上相同名称的类名、常量名或者函数名的。这种情况下就需要引入命名空间。
https://www.jianshu.com/p/24c7a5ec4564

10.http和https的区别
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
https://www.geek-share.com/detail/2668591640.html

11.统计文本长度的函数
mb_strlen()
为什么要用mb的函数
可选参数用于指定字符编码
参考:https://www.geek-share.com/detail/2631775102.html

12.数据库存手机号用什么类型,为什么
char(20)如果还有前缀匹配操作,正则,如归属地,如135****,
字符型。考虑到电话号码一般不参加运算

13.null==null true还是false
php中是true
mysq是false
mysql的null 参考:https://www.geek-share.com/detail/2694673443.html

14.获取北京的时间戳

<?php

date_default_timezone_set('PRC');
echo "当前时间为:".date('Y-m-d H:i:s');

?>

https://blog.csdn.net/adley_app/article/details/78530793

15.安全对一套程序来说至关重要,请说说在开发中应该注意哪些安全机制?
(1)使用验证码防止注册机灌水。
(2)使用预处理,绑定参数,参数过滤转义 防止sql注入
(3)使用token防止远程提交,使用token验证登录状态。

16.在程序的开发中,如何提高程序的运行效率?
(1)优化SQL语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询。
(2)数据表中创建索引。
(3)对程序中经常用到的数据生成缓存(比如使用redis缓存数据,比如使用ob进行动态页面静态化等等)。
(4)对mysql做主从复制,读写分离。(提高mysq执行效率和查询速度)
(5)使用nginx做负载均衡。(将访问压力平均分配到多态服务器)

17.现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?
MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示。
优点是: ①可以实现代码的重用性,避免产生代码冗余;
②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

18.Print、echo、print_r有什么区别?
(1) echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出echo会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。
(2) print 是打印字符串
(3)print_r 则是打印复合类型 如数组 对象

19.Mysql查询优化
查找分析查询速度慢的原因
记录慢查询日志,可以使用pt-query-digest工具分析
使用show profile。set profile=1;开启,服务器上执行的所有语句会检测消耗的时间,存到临时表中
show status:返回一些计数器,show global status查看服务器级别的所有计数
show processlist:观察是否有大量线程处于不正常的状态或特征

原文:https://blog.csdn.net/qq_42408833/article/details/80729576

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: