php方面 @1.在 PHP 中,对象是按值传递还是按引用传递? 答 引用 @2.引用传递的优势 答 减少数据复制,节省内存开销 0 介绍下常用的程式規範 3.PHP中self与static區別和關係 答 self带包代码所在类,static代表当前使用的类 4. Trait 是什么 如何理解他? 答 Trait 是一种代码复用技术,为 PHP 的单继承限制提供了一套灵活的代码复用机制。 5. 在什么應用场景中使用Trait 答 有多继承需求的情况,比如需要有多个父类(php只支持一个父类),或者在父类需要更多定制功能的情况下使用 6. Trait 调用的优先级 答 自身方法 > trait 的方法 > 继承的方法 7.介绍下Class中的魔术方法 __get、__set、__call(), 答 在访问类属性的时候,若属性可以访问,则直接返回;若不可以被访问,则调用__get 函数。 在设置一个对象的属性时,若属性可以访问,则直接赋值;若不可以被访问,则调用__set 函数。 当调用一个不可访问的方法时会调用__call方法。 8.什么是interface,interface的好处是什么? 答 开发者使用interface来描述一个或者一组类的共同行为。 好处是可以解耦(耦合)!接口允许你在不更改详细主逻辑过程下更改实现,也就是你使用此实现的方式。 資料库 1. 資料庫中使用Transaction的优势和應用场景. 答 保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败 2. 資料庫索引优缺点 答 优点: 提高数据的检索速度,降低数据库 IO 成本:使用索引的意义就是通过缩小表中需要查询的记录的数目从而加快搜索的速度。 降低数据排序的成本,降低 CPU 消耗:索引之所以查的快,是因为先将数据排好序,若该字段正好需要排序,则正好降低了排序的成本 缺点: 占用存储空间:索引实际上也是一张表,记录了主键与索引字段,一般以索引文件的形式存储在磁盘上。 降低更新表的速度:表的数据发生了变化,对应的索引也需要一起变更,从而减低的更新速度。否则索引指向的物理数据可能不对,这也是索引失效的原因之一。 3.那些查询会使索引失效 答 ‘<’ , ‘>’ ,not in ,like , groupby 4.查詢數據時還有哪些優化方案 laravel 说下 Laravel 生命週期 public/index.php -> bootstrap/app.php -> ServiceProvider -> RouteServiceProvider->routes.php->Controller 1、 解释 Laravel 中契约的概念 答 它们是 Laravel 框架的接口集合。这些契约提供核心服务。Laravel 中的契约包括相应的框架实现。 2、什么是IOC(控制反转)? 答 IOC是一种设计思想,它主要控制了外部资源获取(不只是对象包括比如文件等)。并且由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以叫控制反转。 3、 具体讲讲依赖注入? 答 由容器动态的将某个依赖关系注入到组件之中,依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。 “依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。 5. 有没有使用过 广播 实际应用讲一些 5-1. 在laraval中如何使用websocket 說一些之前的使用案例 6.laravel 还有哪些特色功能和能力,大概介绍下你使用的场景以及解决的问题 7. 在生产環境(线上正式服务器) 都可以做哪些优化设置 答 1. 路由缓存 php artisan route:cache 2. 缓存配置 php artisan config:cache 3.优化 Composer 自动加载# composer dump-autoload -o 4.换个其他 / 更好的 Cache/Session 驱动# 5删除未使用的服务# ... 8.多人协作开发时,如何高效进行,并且确保程式(code)可靠性 9 如何使用模組(Module)化設計开发 性能优化 1.常见性能优化方案 答.使用内存cache(redis memcache等),数据库建立索引,数据库分库分表,数据库读写分离,web服务器集群, 2.redis在php项目中常见應用场景 答 php session, php数据cache, 数据队列 3.redis 都有哪些資料类型,使用场景 答 String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M --- Hash(字典) 键值对集合,即编程语言中的Map类型 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) 存储、读取、修改用户属性 List(列表) 链表(双向链表) 增删快,提供了操作某一段元素的API 1、最新消息排行等功能(比如朋友圈的时间线) 2、消息队列 Set(集合) 哈希表实现,元素不重复 1、添加、删除、查找的复杂度都是O(1)  2、为集合提供了求交集、并集、差集等操作 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 Sorted Set(有序集合) 将Set中的元素增加一个权重参数score,元素按score有序排列 数据插入集合时,已经进行天然排序 1、排行榜 2、带权重的消息队列 4.在过往專案中使用redis的方案,大概介绍下 5.在高并发写入資料庫时,如何保证性能与写入資料可靠性,说说你的一些解决方案 答 1.数据库读写分离并且写入集群,2.使用队列进行数据处理,3.对数据库进行锁表,4.使用redis进行逻辑锁 安全方面 1.php危险的自带函式都有哪些. 答: exec、shell_exec、system。eval 2.php常见安全问题都有哪些 答 xss,csrf,sql注入,上传漏洞, 3,sql注入利用方式,如何防御 3.sql注入都有哪些地方可以被利用 答, get post等请求參數,cookie信息等 5. XSS是什么,如何防御 答 反射型 XSS:简单地将用户输入的数据反射给浏览器 存储型 XSS:把用户输入的数据存储在服务器端 可以截获 sessionid 拿到权限 防御 为 Cookie 设置 HttpOnly,避免 Cookie 被劫持泄露 对输入/输出进行检查,明确编码方式 6.csrf是什么,如何防御 答 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法 防御 增加验证码(简单有效) 检查请求来源是否合法 增加随机 token