PHP面试题(二)---百度

百度一面
1.自我介绍 
2.问我研究生期间主要课程 
3.
数据库优化 
4.
MySQL组合索引特点 
5.
PHP中垃圾回收 
6.是否看过
php源码,做过php扩展,并阐述一下 
7.
mysqlMongoDB区别 
百度二面 
1.自我介绍 
2.Mysql中索引类型,B-tree、Hash索引怎么实现的以及其特点? 
3.Mysql中什么时候会出现数据丢失?怎样预防数据丢失 
4.php虚拟机怎样解析php代码的 
5.Mysql的优化步骤? 
6.Mysql中的锁? 
7.Mysql中的索引作用?如果不考虑其物理空间,索引是不是越多越好? 
8.Mysql中主从复制原理与搭建 
9.Mysql集群 
10.是否阅读过Mysql源码? 
11.反射作用以及应用场合?为什么非得用反射? 
12.是否用到过socket编程,socket与curl区别? 
13.php中图像处理 
14.php中垃圾回收 
15.php为什么是弱类型 
16.研究生期间的课程有哪些? 
17.Apache与Nginx区别? 
18.web安全有哪些? 
19.描述从输入url到显示,中间发生了什么?主要阐述apache或者Nginx中发生了什么? 
20.Hash结构 

函数参数传递机制的基本理论
函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。
  值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
  引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的
实参变量。



-----------------------------------------------------------------------------------

仅讨论一下值传递和引用:
所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。
所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。

6、操作系统死锁的理解。

7、快速排序。

8、链表逆序,要求给出多种解题方案。

9、二叉树从根节点到叶节点路径上数字之和为一特定数的问题,会问到具体实现的数据结构(stack),算法优化。

10、是否熟悉前端相关技术(HTML、CSS、BooTStrap、JS、jQuery、Ajax等)。

11、linux 部分shell指令:如何查看某一个端口是否被占用,用过那些linux系统(ubuntu、centos等),是否了解linux内核。

12、Cookie和Session的理解。

13、PHP语言对字符串逆序的函数是什么,文件操作的函数名是什么,PHP使用了多长时间。

HTTP POST 和 GET的 区别。

 

在这特别感谢之前牛客网分享百度面经的前辈们,相关知识点基本都能靠上,不过面试官喜欢深入去问,准备的时候还是得明白其中的原理。

 

第二天来了电话二面,被虐成了渣:

1、C指针的大小,是否是固定的。

2、PHP JSON函数是否了解,PHP 运算符 “===” 和 “==”的区别,PHP引用(传值和传址)的理解。

3、js的闭包概念,ajax回调函数。

4、算法题:如何判断有环链表,有环链表如何判断开始的节点,有没有更高效的方法?

5、数据库连接查询有那几种?详细描述一下。

6、数据库慢查询优化,索引技术,存储引擎,不同引擎之间的区别

7、TCP的三次握手和四次挥手。

8、数据库表user只有id,name两个字段,编程实现删除重复数据,确保相同name的用户只有一条数据

================================


var_dump('0123'==123); 0123==123 

$i=5;
echo $i+++$i++;
echo $i;


PHP获取POST的json数据:
https://my.oschina.net/u/205403/blog/325595

有500个整数在[0-200]区间内,要求排序,时间复杂度为O(n)

二维数组排序

一串数字,怎么找到第二大的数字

nginx 配置ip过滤 等等

mysql 分组排序加序号 @i    := @i + 1        rownumber() 

php 怎么做异步     //消息
https://www.jianshu.com/p/3f8a43b22dd8


用户正在进行操作api_token过期了怎么办? token 本身是为了增加安全性,延长过期有待考虑
自动刷新并重新请求接口?


rdb aof 原理

mysql 锁 主从原理 延迟解决

redis 消息

获取中英文字符串长度?

框架mvc如何实现的?

form表单与restful区别?

拦截器怎么实现?

merge原理?

php如何定义编码形式?

一个极端场景 : 多台服务器下,一件商品拍卖,用户出价的请求同时到达服务端且出价价格一样问题,怎么解决价格一样?这件端口卖给谁?redis并发队列不可以.

怎样保证接口的第三方使用者就是我的用户,token可以被人模拟。威胁:爬虫,资源显示,商城支付篡改

 

以微博为例,假设有1亿有效用户,用户之间的关注可以是单向的,平均每个用户关注100个用户,设计一系列关系数据表结构,要求:
    A:根据一个用户,获得他关注的全部用户
    B:根据一个用户,获得全部关注他的用户
    C:给出任意两个用户,获取其共同关注的用户
    D:给出任何两个用户AB,获取A关注的用户中也关注了B的用户
    
    在以上设计的基础上,假设使用某SQL引擎,这个引擎速度很快,但当表存储大于1000万时性能急剧下降,如何避免这个特性对性能的影响? 参考: http://chuansong.me/n/1447812451431

1. 合理的SQL,数据结果集越靠前,效率越高。
2. 合理的索引,避免SQL语句全表扫描,所以SQL一定要走索引(如:一切的 > < != 等等之类的写法都会导致全表扫描)
3. 避免 limit 10000000,20 这样的查询
4. 避免 LEFT JOIN 之类的查询,不把这样的逻辑处理交给数据库
5. 每个表索引不要建太多,大数据时会增加数据库的写入压力
6. 控制数据量,分表

占位符是如何防止sql注入的?

abc bac 同胞字符串 在大文件中查找某一字符串的同胞

升降数组单调排序,restful鉴权,expload实现传入分割数组分割

PHP优化

你可能感兴趣的:(PHP面试题(二)---百度)