百度php实习生面经

强类型,弱类型
内存中的堆和栈的机制
内存泄漏
php垃圾回收机制
怎么防止循环引用
你平时在代码中用过的设计模式
python 和 php变量区别

谈谈session
cookie怎么设置的
HTTP中cookie位于报文哪部分

如何实现用户和管理员的权限
版主的权限怎么实现
如何防止sql注入
如何防止xss攻击

算法题:
返回数组的第25%的元素(提示:修改快排;堆)
两个相同长度排好序的数组,找出他们合并后的中数

强类型,弱类型

弱类型相对于强类型来说类型检查更不严格,比如说允许变量类型的隐式转换,允许强制类型转换等等。强类型语言一般不允许这么做。

强类型:

每个变量和对象都必须声明类型,在编译时确定好类型了,执行时不能更改。偏向于不容忍隐式类型转换。譬如说haskell的int就不能变成double。

弱类型:

编译时不确定类型,执行时根据语义确定是哪种类型。通俗地说,弱类型偏向于容忍隐式转换,把不同类型的变量放在一起运算。

静态,动态类型:

简单地说,就是在声明了一个变量之后,不能改变它的类型的语言,是静态语言;能够随时改变它的类型的语言,是动态语言。因为动态语言的特性,一般需要运行时虚拟机支持。

静态类型:

编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。

动态类型:

编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。譬如说你不能对一个数字a写a[10]当数组用。

各语言类型

了解更多:https://www.cnblogs.com/wandiao/p/9135020.html

内存中的堆和栈的机制

内存中的堆栈
内存空间在逻辑上分为三部分:代码区、静态数据区和动态数据区,动态数据区又分为栈区和堆区。

代码区:存储方法体的二进制代码。高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)控制代码区执行代码的切换。
静态数据区:存储全局变量、静态变量、常量,常量包括final修饰的常量和String常量。系统自动分配和回收。
栈区:存储运行方法的形参、局部变量、返回值。由系统自动分配和回收。
例如 int method(int a){int b;}栈中存储参数a、局部变量b、返回值temp。
堆区:new一个对象的引用或地址存储在栈区,指向该对象存储在堆区中的真实数据。由程序员分配和回收(Java中由JVM虚拟机的垃圾回收机制自动回收)。
例如 Class Student{int num; int age;} main方法中Student stu = new Student();分配堆区空间中存储的该对象的num、age,变量stu存储在栈中,里面的值是对应堆区空间的引用或地址。

了解更多:https://blog.csdn.net/qq_23864697/article/details/92811547
https://blog.csdn.net/qq_41498261/article/details/83583466

内存泄漏

内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

php垃圾回收机制

php 5.3之前使用的垃圾回收机制是单纯的“引用计数”,也就是每个内存对象都分配一个计数器,当内存对象被变量引用时,计数器 1;当变量引用撤掉后,计数器-1;当计数器=0时,表明内存对象没有被使用,该内存对象则进行销毁,垃圾回收完成。

“引用计数”存在问题,就是当两个或多个对象互相引用形成环状后,内存对象的计数器则不会消减为0;这时候,这一组内存对象已经没用了,但是不能回收,从而导致内存泄露;

php5.3开始,使用了新的垃圾回收机制,在引用计数基础上,实现了一种复杂的算法,来检测内存对象中引用环的存在,以避免内存泄露

怎么防止循环引用

新的GC算法

在较新的PHP手册中有简单的介绍新的GC使用的垃圾清理算法,这个算法名为 Concurrent Cycle Collection in Reference Counted Systems , 这里不详细介绍此算法,根据手册中的内容来先简单的介绍一下思路:

首先我们有几个基本的准则:

1:如果一个zval的refcount增加,那么此zval还在使用,不属于垃圾

2:如果一个zval的refcount减少到0, 那么zval可以被释放掉,不属于垃圾

3:如果一个zval的refcount减少之后大于0,那么此zval还不能被释放,此zval可能成为一个垃圾

只有在准则3下,GC才会把zval收集起来,然后通过新的算法来判断此zval是否为垃圾。那么如何判断这么一个变量是否为真正的垃圾呢?

简单的说,就是对此zval中的每个元素进行一次refcount减1操作,操作完成之后,如果zval的refcount=0,那么这个zval就是一个垃圾。

你平时在代码中用过的设计模式

python 和 php变量区别

python是强类型,php是弱类型

谈谈session

session保存在服务器中
可以通过sid保存在cookie里来对应服务器的session内容

cookie怎么设置的

Cookie相关的Http头:

有两个Http头部和Cookie有关

Set-Cookie和Cookie。
Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie
Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。

具体到php中:
设置:setcookie()
使用:$_COOKIE()

HTTP中cookie位于报文哪部分

HTTP请求报文的Cookie首部行

如何实现用户和管理员的权限

管理员表与用户表
管理员登录管理员界面
用户登录用户界面
分别拥有各自权限

版主的权限怎么实现

如何防止sql注入
如何防止xss攻击

输入检测
参数化查询
字符替换

算法题:
返回数组的第25%的元素(提示:修改快排;堆)

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/solution/shu-zu-zhong-de-di-kge-zui-da-yuan-su-by-leetcode/

两个相同长度排好序的数组,找出他们合并后的中数

https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/xun-zhao-liang-ge-you-xu-shu-zu-de-zhong-wei-shu-b/

#百度##PHP工程师##面经##实习#
全部评论
后面是我整理的应该算是答案的答案,我很多都没答上来。。。凉经
点赞 回复
分享
发布于 2019-09-12 16:03
是电话一面
点赞 回复
分享
发布于 2019-09-12 16:03
联易融
校招火热招聘中
官网直投
秋招的吗
点赞 回复
分享
发布于 2019-09-14 17:43
感觉还是难
点赞 回复
分享
发布于 2019-09-14 17:43
不知道为啥,我总觉得PHP现在岗位不是很多?我本科实习的时候,感觉那时候php开发疯狂招人。是我没关注了还是真的这样啊
点赞 回复
分享
发布于 2019-09-14 17:55

相关推荐

头像
04-10 07:16
已编辑
四川大学
1.介绍公司和部门2.自我介绍3.用了布隆过滤器,谈一下布隆过滤器4.布隆过滤器用了hash,有那些hash冲突解决方案?hashmap链表红黑树5.hashmap链表多少长度转红黑树,为什么定这个值?答了泊松定理泊松分布,面试官说太学院派了,实际开发不这样😂6.算法题 最小栈 说思路7.看你使用了lambook,原理不知道,答了反射,错8.什么是反向代理9.什么是正向代理不知道10.threadlocal怎么实现线程私有11.threadloacl中hash冲突怎么解决,看过源码吗答不出,没看过源码12.单元测试做过吗,用了哪些宝用过springboottest,不知道是不是单元测试13.有研究过springboottest原理吗没有14.我提问一面感觉答得不好,面试官很耐心,不会的会解释清楚。第二天上午约二面二面面试官说技术面过了,那问点项目1.项目都是自己做的吗2.开发的完整流程走过没有(打包上线之类的)3.单元测试写过吗4.开发中用了哪些数据结构,解决了哪些问题?5.做了哪些优化索引,redis…6.性能多大提升,测过吗7.redis怎么保证的一致性8.看你用了字典树,解释一下字典树呢,是自己实现的吗9.你是先知道应该这么优化,设计初就知道,还是说先自己做,发现性能很差再优化?10.为什么要做联合索引,相比单列有什么优势呢?11.你的环境,开发框架什么的都是自己搭建的吗12.springboot的starter底层实现了解过没有13.注解配置用了哪些14.我问问题参与哪些业务会加班吗二面完半小时oc
点赞 评论 收藏
转发
4 19 评论
分享
牛客网
牛客企业服务