0

0

这些php知识点学好,你也能进百度!

PHPz

PHPz

发布时间:2017-02-13 15:42:29

|

2922人浏览过

|

来源于php中文网

原创

百度的面试,尤其是初面,整体面试不是很难的。前两轮技术面试都需要手写代码的,主要涉及的类目有语言基础、设计模式、算法基础、数据库。最看重的就是基础,基础,还是基础。涉及的面比较广,但都是一个程序员应当也应该知道的东东。答案仅供参考。(文章摘自网络)

现整理10个问题如下:

1、PHP的整型溢出问题是怎样的

2、如何理解OOP

3、你对于设计模式和MVC的理解

立即学习PHP免费学习笔记(深入)”;

4、HTTP协议1.0及1.1的区别,并简单说下HTTP协议

5、简单说下Apache中rewrite机制和PHP框架中URI路由机制

6、MySQL的索引机制,复合索引的使用原则

7、MySQL的表类型及MyISAM与InnoDB的区别

8、简单说下快速排序算法

9、awk、sed、sort的基本使用(用实例考察的)

10、Memcached、redis的使用和理解

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

【1】PHP的整型溢出问题是怎样的

PHP的整型数的字长和平台有关,对于32位的操作系统,最大的整型是有二十多亿,其实就是2的31次方,最小为-2的31次方,PHP不支持无符号的整数。 如果一个数超出了integer范围,将会被自动解释为float。如果执行的运算结果超出了 integer 范围,也会返回 float。(那在java、C中的整型整型溢出会怎样)

【2】如何理解OOP

OOP,面向对象编程,包括三个方面,继承性、封装性、多态性,其中最根本的东西就是抽象。

继承性,即扩展性,通过子类对已经存在的父类进行功能扩展。

封装性,要求外部不能随意存取对象的内部数据,即对该类中的具体实现做封装,用户不必知道内部的具体实现,只有知道它是干什么的,怎么用就好了。

多态性,就是类的抽象和接口,同一个类能够处理多种类型对象的能力。

我们在现实中,看到的任何东东都可以看做为一个对象,然后通过进一步的抽象为类,类又可以演变为很多类似的对象。举个简单的例子,将我们看到的一个房子抽象为一个ROOM类,包括基本的门,窗,桌子等物件,人可以进出等功能。 现在我们继承ROOM类为Classroom,包括扇门,有大窗,有桌椅,另外只包括一个黑白和一个讲台,老师和同学可以上课。现在我们实例化这个Classroom类为Classroom_621对象,包括两扇门,四扇大窗,30套桌椅,有同学正在上毛概课。

【3】你对于设计模式和MVC的理解

Model-View-Controller,模型、视图、控制器,一想到MVC就会想到JAVA,因为JAVA是一个完全面向对象的语言,MVC最早出现在smalltalk中,其核心就是要将试图和数据模型分离,这样不同的程序就可以有不同的展示。

模型,即程序员写的功能、算法和数据模型,也就是我们说的系统业务逻辑层。

视图,即前端,图形界面。展示给用户看的。

控制器,主要负责对请求处理、转发和加载视图。

设计模式,说白了就是代码的设计经验的总结和归类,设计模式最早应用于建筑行业,编程的设计模式按最早的GoF所述,包括23种设计模式,主要用于面向对象的程序编程。遵循几个设计原则:开闭原则、单一职责原则、里氏替换原则、依赖注入、接口分离、迪米特原则、优先使用组合而不是继承等等。包括创建型模式、结构性模式、行为模式三类。

【4】HTTP协议1.0及1.1的区别,并简单说下HTTP协议

HTTP,超文本传输协议。它定义了浏览器和服务器的通信规则。HTTP协议是基于TCP/IP的TCP协议上,现在万维网使用的是HTTP1.1版本,其特点包括,C/S模式,请求简单(GET/POST/HEAD),灵活(可以传输任何类型的数据HTML、XML、JSON、自定义等),无连接(每次连接只处理一个请求,从发出请求到收到200状态为止断开连接),无状态。

对HTTP协议的考察主要包括,响应消息格式、请求消息格式、状态码等知识点。

一般一个HTTP协议包括:起始行(start line)、首部(header)、主体(body)三个部分。

[响应消息格式]

HTTP/1.1 200 0K

Connectlon:close

Date: Thu, 13 Oct 2005 03:17:33 GMT

Server: Apache/2.0.54 (Unix)

Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT

Content—Length:682l

Content—Type:text/html

这个响应消息分为3部分:1个起始的状态行(status line),首部、1个包含所请求对象本身的附属体。状态行有3个字段:协议版本字段、状态码字段、原因短语字段。

[请求消息格式]

GET /somedir/page.html HTTP/1.1

Host:www.chinaitlab.com

Connection:close

User-agent:Mozilla/4.0

Accept-language:zh-cn

(额外的回车符和换行符)

该请求消息的第一行称为请求行 (request line),后续各行都称为头部行(header)。请求行有3个字段:方法字段、URL字段、HTTP版本字段。

[状态码]参见http://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html

1xx 消息

2xx 成功

3xx 重定向

4xx 请求错误

5xx 服务器错误

[常见状态码]

200 OK。请求已成功,请求所希望的响应头或数据体将随此响应返回。

300 Multiple Choices。请求资源有多个选择,如请求文本有法语版、英语版等等。

301 Moved Permanently。表示请求的网页已永久转移到新位置

302 Found。表示页面在做临时跳转时返回的状态。

304 Not Modified。客户的缓存资源是最新的, 要客户端使用缓存。

400 Bad Request。错误的请求。

403 Forbidden。请求被服务器拒绝了。

404 Not Found。表示服务器找不到请求的网页,服务器上不存在的网页经常会返回的HTTP状态码。

Imagine By Magic Studio
Imagine By Magic Studio

AI图片生成器,用文字制作图片

下载

500 Internal Server Error。

503 Service Unavailable。服务器目前无法为请求提供服务,但过一段时间就可以恢复服务。

504 Gateway Timeout。与状态吗408类似, 但是响应来自网关或代理,此网关或代理在等待另一台服务器的响应时出现了超时。

505 HTTP Version not supported。 HTTP协议版本不支持。

【5】简单说下Apache中rewrite机制和PHP框架中URI路由机制

1)URL重写,其实就是把用户通过浏览器请求的URL,到了后台,apache根据预先配置的重写规则将该请求指向真正的资源路径,说白了就是打马虎眼,把真正的路径改头换面后给用户访问,可问题是这样做有啥用处呢。

1、SEO方面。将动态的URL静态化,以满足搜索引擎的胃口。

2、访问控制。比如,通过重写规则后,客户端不易判断后台程序类型等。

3、URL重定向。当网站更改域名或增加别名URL后,可以通过规则轻松的指向要访问的URL。

mod_rewrite 使用基于正则表达式动态的修改传入请求的URL。它可以将URL映射到文件系统路径,也可以将一个URL映射到另一个URL。它使用了没有限制数量的规则来操纵URL,每条规则可以包括没有限制数量的附加条件。你可以通过多种方式来检测,如,服务器变量、环境变量、HTTP头、时间戳等。

mod_rewrite 操作整个URL路径,包括path-info的部分。一个重写规则可以被设置在http.conf或者.htaccess中。一个重写规则生成的路径可以包括一个请求字符串,或者内部的子程序处理,外部请求的重定向,或者穿透内部代理等。

2)PHP框架中的URI路由机制,与apache重写类似,一般包括通配符和正则两种规则。让用户可以重新定向(remap)URI处理程序. 设定你自己的路由规则。

【6】MySQL的索引机制,复合索引的使用原则

(深入浅出MySQL一书中对索引的使用讲的比较细致)

一般都会用书本中的目录来介绍索引机制,包括有些书本会有专门的快速检索附录,就很类似于数据库的索引。

MySQL的索引包括4类:主键索引(primary key)、唯一索引(unique)、常规索引(index)、全文索引(fullindex)。

Show index from table_name; –查看表中的索引

Show status like ‘Handler_read%’ –查看索引的使用情况

复合索引,一般遵循最左前缀原则,如table_a 的 a b c 三列建复合索引

create index ind_table_a on table_a(a,b,c);

那么,只有在条件中用到a,或者a、b,或者a、b、c这样的情况下,才会用到刚建的复合索引。

【7】MySQL的表类型及MyISAM与InnoDB的区别

MySQL常见的表类型(即存储引擎)

show engines查看支持表类型配置。常见包括:MyISAM/Innodb/Memory/Merge/NDB

其中,MyISAM和Innodb是最常用的两个表类型,各有优势,我们可以根据需求情况选择适合自己的表类型。

[MyISAM]

1)每个数据库存储包括3个文件:.frm(表定义)、MYD(数据文件)、MYI(索引文件)

2)数据文件或索引文件可以指向多个磁盘

3)Linux的默认引擎,win默认InnoDB

4)面向非事务类型,避免事务型额外的开销

5)适用于select、insert密集的表

6)MyISAM默认锁的调度机制是写优先,可以通过LOW_PRIORITY_UPDATES设置

7)MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。

[Innodb]

1)用于事务应用程序

2)适用于update、delete密集的操作。执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

3)引入行级锁和外键的约束

4)InnoDB不支持FULLTEXT类型的索引

【8】简单说下快速排序算法

基本思想:通过一趟排序将待排序列分割成两部分,其中一部分比另一部分记录小,再分别对这两部分继续快速排序,以达到有序。

算法实现:设有两个指针low和high,初值为low=1,high=n,设基准值为key(通常选第一个),则首先从high位置开始向前搜索,找到第一个比key小的记录与key交换,然后从low位置向后搜索,找到第一个比key大的记录与基准值交换,重复直至low=high为止。

第一趟排序结果,key之前的记录值比key之后的记录值小。

11 25 9 3 16 2 //选择11为key

2 25 9 3 16 11

2 11 9 3 16 25

2 3 9 11 16 25

【9】awk、sed、sort的基本使用(用实例考察的)

[例]:有如下文件test,请统计每个网址出现次数,用一句shell实现。

  a www.baidu.com 20:00

  b www.qq.com 19:30

  c www.baidu.com 14:00

  d www.baidu.com 23:00

  e www.qq.com 20:30

  f www.360.com 20:30

cat test| awk -F’ ‘ ‘{print $2}’ |sort | uniq -c | sort -rn

【10】Memcached、redis的使用和理解

Memcached和redis 都是一个key-value的内存式存储系统,通过hash表来存储检索结果,做到强大的缓存机制。像新浪的微博、淘宝等大流量站点都必须的使用了这些东东。

下面是从百科中摘录的介绍。具体实践和使用后续再详细介绍。

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。

题外话:
整个面试流程感觉非常nice,觉得面试官都比较随意的。没有像别人说的那样高傲的。百度的面试是开放式的,整个面试过程中附近都有人在讨论问题和方案。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
大数据(MySQL)视频教程完整版
大数据(MySQL)视频教程完整版

共200课时 | 19.3万人学习

程序员就业面试技巧
程序员就业面试技巧

共11课时 | 1万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 7.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号