2018春招PHP面试总结 | 掘金技术征文

此次的面试,不只仅但愿能开启一个新的征程,了解世界,也是一个发现自身不足的一个过程,借由此肯定未来的发展(学习)方向的一次机会。php

面试准备

一份能让面试官了解你的简历,一份对于本身的自信,就出发吧 html

Mind-map

PHP

php是世界上最好的语言!前端

基础

  1. session和cookie的区别
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据能够保存在集群、数据库、文件中

    Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
复制代码
  1. PHP7用了吗,了解哪些新特性
PHP7在性能方面实现跨越式的提高,新的操做符,统一变量语法等等

    参考[PHP7的文章](https://blog.csdn.net/u011957758/article/details/73320083)
复制代码
  1. 魔术变量
问了__dir__表明的含意,这个是回答文件所在的目录

    参考[PHP 手册之魔术常量](http://php.net/manual/zh/language.constants.predefined.php)
复制代码
  1. 魔术方法
这算是常常会问到的一个题目了,经常使用的都记得,突然问到__invoke()就懵了
    __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 

    参考[PHP 手册之魔术方法](http://www.php.net/manual/zh/language.oop5.magic.php)
复制代码

数据结构和算法

  1. 栈数据结构
只要能用代码实现出栈数据结构便可

    参考[栈数据结构文章](http://www.jb51.net/article/130272.htm)
复制代码
  1. 冒泡排序
只要能用代码实现出冒泡排序便可

    参考[冒泡排序文章](http://www.jb51.net/article/24497.htm)
复制代码
  1. 彻底二叉树和满二叉树的区别
只有最下面的两层结点度可以小于2,而且最下面一层的结点都集中在该层最左边的若干位置的二叉树才为彻底二叉树
    而一棵深度为h且有 2^h-1个结点的二叉树即为满二叉树

    参考[完美二叉树, 彻底二叉树和完满二叉树](https://blog.csdn.net/HaoDaWang/article/details/78065162)
复制代码

架构相关

  1. Laravel和ThinkPHP有什么区别,对于laravel有什么要吐槽的
我从路由,中间件到控制器,数据访问,视图等层面上介绍了不一样
    吐槽的话可能相对于一些项目,laravel有点‘重’

    参考[tp3.2和tp5,以及laravel的区别](https://blog.csdn.net/qq1690194137/article/details/79794944)
复制代码
  1. [有用composer发布过本身的包吗](基于 Composer 的 PHP 模块化开发)
我回答没有,只是了解过
    面试官就说他们的框架是本身在Discuz的基础上二次开发的框架,在他优秀的基础上把composer依赖管理也都引进blabla

    参考[基于 Composer 的 PHP 模块化开发](https://zhuanlan.zhihu.com/p/27943241)
复制代码
  1. 谈谈对于MVC的理解
结合项目说明模板,视图,控制器之间的关系和基本的构成

    参考[MVC](https://baike.sogou.com/v25227.htm)
复制代码

防御

  1. XSS 跨站脚本攻击
  2. DDOS 流量攻击
  3. CSRF 跨站请求伪造攻击
  4. SQL注入
在前端表单用户输入进行控制或限制
    有后端传参数和数据时进行过滤等等

    参考[常见的 CSRF、XSS、sql注入、DDOS流量攻击](https://blog.csdn.net/echo_laodong/article/details/79254552)
复制代码

项目

  1. 在项目中如何解决并发的问题
个人解决办法先是前端控制有效请求,例如一分钟才正常请求一次
    接着后端一样过虑无效请求,接着接操做放进队列中实现

    有个面试官问,你这个队列是阻塞的吗,若是真的同时两个用户购买,两个用户等待完成,他们仍是用同一个线程完成,有没有考虑用其它方式实现
    我说无,他就说能够用锁的机制,第二个等待第一个完成,一个接一个

    参考[php高并发解决的一点思路](https://blog.csdn.net/mkbug/article/details/71455725)
    相关的还有swoole扩展,能够了解下
复制代码
  1. 微信支付具体实现流程
1. H5页面发起支付请求,请求生成支付订单
    2. 调用统一下单API,生成预付单
    3. 生成JSAPI页面调用的支付参数并签名
    4. 微信浏览器自动调起支付JSAPI接口支付
    5. 确认支付
    6. 异步通知商户支付结果,商户收到通知返回确认信息
    7. 返回支付结果,展现支付信息给用户

    参考[微信支付时序图](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4)
复制代码
  1. 简单实现登陆注册功能
各个框架考虑的方面不同,这就按本身的理解写出相应的代码就好
复制代码
  1. 如何设计一个商城
我是先给本身限定了一个B2C的商城,而后从数据表开始,接着简单介绍前端和后端实现逻辑

    参考[PHP网上商城网站的设计与实现](http://www.docin.com/p-190062065.html)
复制代码

MYSQL

mysql优化基本是重中之重了,尤为考验技术mysql

基础

  1. InnoDB和MyISAM有什么区别
InnoDB提供事务处理,行级锁,支持外键,支持多种行格式
    MyISAM只支持表级锁,全文索引,堆表

    参考[MyISAM与InnoDB区别](https://blog.csdn.net/xifeijian/article/details/20316775)
复制代码
  1. 事务有哪几个特性
原子性、一致性、隔离性、持久性
复制代码
  1. 事务的隔离级别
未提交读、已提交读、可重复读、可串行化

    参考[Innodb中的事务隔离级别和锁的关系](https://tech.meituan.com/innodb-lock.html)
复制代码
  1. 有个表字段的O_Id,OrderDate,OrderPrice,Customer这几个,咱们但愿查找订单总金额少于 2000 的客户
SELECT Customer,SUM(OrderPrice) FROM Orders
    GROUP BY Customer
    HAVING SUM(OrderPrice)<2000
复制代码
  1. 查询学生表的数据,大于六十的为及格,反之不及格
select 分数,类别=Case
    WHEN 分数>=60 THEN '及格'
    ELSE '不及格'
    END
    from 成绩表
复制代码
  1. 查询没有学完全部课程的学生学号、姓名
SELECT a.SNO ,a.SNAME  
    FROM student a  
    WHERE a.`SNO` NOT IN  
        ( SELECT b.`SNO` FROM SC b  
        GROUP BY b.`SNO` HAVING COUNT(*) =  
            ( SELECT COUNT(*)  FROM course)
        );  
复制代码

优化

  1. "select * from student where name='red'","select * from student where name='blue'",优化语句
select name from student where name='red'
    union
    select name from student where name='blue'

    若是用or条件, myisam表能用到索引, innodb不行。 
    innodb用UNION替换OR (适用于索引列) 
复制代码
  1. 你通常都会怎么优化数据库
查询缓存、EXPLAIN、(联合)索引、使用固定长度静态表
    
    这问题都能写一本书了,参考[MySQL性能优化的最佳21条经验](https://blog.csdn.net/kaka1121/article/details/53395587)
复制代码

服务器

防御

服务器怎么作防御nginx

仅开放有限端口,限制登陆IP,限制登陆账号

    也是能够定一本书的问题,能够根据项目回答,参考[服务器防御知识点汇总](https://blog.csdn.net/Sasoritattoo/article/details/9324149)
复制代码

协议

Get和Post有什么区别laravel

Get的参数包含在URL,GET请求会被浏览器主动cache,是url编码,有字符限制参数为ASCII字符
    Post 经过request body传递参数,且有多种编码方式
复制代码

NginX

设置nginx时php脚本请求是让什么处理git

默认配置的是转发到FastCGI处理
复制代码

Redis

  1. 你用redis来缓存什么数据
跟据项目来讲本身缓存的一些常常要用到的数据
复制代码
  1. Redis怎么作持久化,配置哪一种刷新频率
配置aof持久化,用默认的每秒刷新aof文件

    参考[redis 的两种持久化方式及原理](https://blog.csdn.net/yinxiangbing/article/details/48627997)
复制代码
  1. Redis是多线程吗
单线程(我居然回答是多线程,233)

    参考[Redis单进程](http://www.cnblogs.com/syyong/p/6231326.html)
复制代码
  1. Redis怎么配置一主多从,要多久
能够用Redis官方集群方案,具体没有实践过,可能要花几周时间来完成

    参考[Redis集群方案](https://www.zhihu.com/question/21419897)
复制代码

代码管理

有用过git吗?当两我的提交了错误代码后,怎么解决面试

用过git提交代码,发生这种状况能够先将远程的代码git pull到本地,而后将冲突的代码或Git标记内容修改正确,而后从新提交代码

    参考[git使用经验](https://zhuanlan.zhihu.com/p/22666153)
复制代码

其它

为何离职

机智回答,稍微提了一下公司或自身的事<del>钱少事多家远</del>
复制代码

你理想的团队

对技术热情,积极解决问题,共同合做

    参考[某种理想的团队](https://zhuanlan.zhihu.com/p/19968752)
复制代码

职业规划

前端深刻,后端深刻,数据优化分析采集,服务器渗透blabla
复制代码

想问的问题

通常都会问公司有什么项目,技术架构,有无盈利等
复制代码

不一样公司技术栈不一样,关心的点也不一样,有点就会在队列的问题上问具体阻塞时的解决方案,有的更多关注项目效率,有的还会关注服务器搭建,有无本身搭建框架和对于流行框架的了解,过程当中也许就能找到本身想要的发展方向redis

后记

5天9家7offer,感受还行,面试时大多公司都会根据简历上的项目进行详细的提问,. 面试时能看出技术上的广度(经历项目或技能多少),和技术的深度(数据优化,框架理解制做,服务器攻防渗透),但愿你们也可以随着项目的发展,不断实践学习技术,就酱。 \(•ㅂ•)/♥ 共勉~算法

相关文章
相关标签/搜索