自己面试遇到的问题

1.小程序登陆*流程
前端调wx.login获取一个code
传给后端 后端调接口用小程序的appid和secret获取openid 和session_key 然后做登录操作
生成token给前端
token用session保存,通过token就可以知道是哪个用户以及不用用户都要登陆 授权。
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://blog.csdn.net/dccmxj/article/details/79291721

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

原文:https://blog.csdn.net/onemetre/article/details/55506174
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.cnblogs.com/qiangxia/p/5261813.html

11.统计文本长度的函数
mb_strlen()
为什么要用mb的函数
可选参数用于指定字符编码
参考:https://blog.csdn.net/u012116457/article/details/42536039

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

13.null==null true还是false
php中是true
mysq是false
mysql的null 参考:https://blog.csdn.net/u014743697/article/details/54136092

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

20.事务的四大特性(ACID):
1.原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。
2.一致性(consistency):数据库总数从一个一致性的状态转换到另一个一致性的状态。
3.隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。
4.持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值