찾다
백엔드 개발PHP 튜토리얼 百度PHP电话面试之10问

百度PHP电话面试之十问

【本文来自】http://www.16nn.com/?p=309 


小结,百度的面试,尤其是初面,最看重的就是基础,基础,还是基础。涉及的面比较广,但都是一个程序员应当也应该知道的东东。回过头来重新找资料做了下题目,答案仅供参考。


1、PHP的整型溢出问题是怎样的
2、如何理解OOP
3、你对于设计模式和MVC的理解
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/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),6个头部行、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。请求已成功,请求所希望的响应头或数据体将随此响应返回。


301 Moved Permanently。表示请求的网页已永久转移到新位置
302 Found。表示页面在做临时跳转时返回的状态。
303 Not Modified。客户的缓存资源是最新的, 要客户端使用缓存。


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


500 Internal Server Error。
503 Service Unavailable。服务器目前无法为请求提供服务,但过一段时间就可以恢复服务。
504 Gateway Timeout。与状态吗408类似, 但是响应来自网关或代理,此网关或代理在等待另一台服务器的响应时出现了超时。


【5】简单说下Apache中rewrite机制和PHP框架中URI路由机制
   
1)URL重写,其实就是把用户通过浏览器请求的URL,到了后台,apache根据预先配置的重写规则将该请求指向真正的资源路径,说白了就是打马虎眼,把真正的路径改头换面后给用户访问,可问题是这样做有啥用处。
1、SEO方面。将动态的URL静态化,以满足搜索引擎的胃口。
2、访问控制。比如,通过重写规则后,客户端不易判断后台程序类型等。
3、URL重定向。当网站更改域名或增加别名URL后,可以通过规则轻松的指向要访问的URL。


 http://httpd.apache.org/docs/current/mod/mod_rewrite.html    
    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 -n |uniq -c


【10】Memcached、redis的使用和理解
   Memcached和redis 都是一个key-value的内存式存储系统,通过hash表来存储检索结果,做到强大的缓存机制。像新浪的微博、淘宝等大流量站点都必须的使用了这些东东。
    下面是从百科中摘录的介绍。具体实践和使用后续再详细介绍。
    Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP : 서버 측 스크립팅 언어 소개PHP : 서버 측 스크립팅 언어 소개Apr 16, 2025 am 12:18 AM

PHP는 동적 웹 개발 및 서버 측 응용 프로그램에 사용되는 서버 측 스크립팅 언어입니다. 1.PHP는 편집이 필요하지 않으며 빠른 발전에 적합한 해석 된 언어입니다. 2. PHP 코드는 HTML에 포함되어 웹 페이지를 쉽게 개발할 수 있습니다. 3. PHP는 서버 측 로직을 처리하고 HTML 출력을 생성하며 사용자 상호 작용 및 데이터 처리를 지원합니다. 4. PHP는 데이터베이스와 상호 작용하고 프로세스 양식 제출 및 서버 측 작업을 실행할 수 있습니다.

PHP 및 웹 : 장기적인 영향 탐색PHP 및 웹 : 장기적인 영향 탐색Apr 16, 2025 am 12:17 AM

PHP는 지난 수십 년 동안 네트워크를 형성했으며 웹 개발에서 계속 중요한 역할을 할 것입니다. 1) PHP는 1994 년에 시작되었으며 MySQL과의 원활한 통합으로 인해 개발자에게 최초의 선택이되었습니다. 2) 핵심 기능에는 동적 컨텐츠 생성 및 데이터베이스와의 통합이 포함되며 웹 사이트를 실시간으로 업데이트하고 맞춤형 방식으로 표시 할 수 있습니다. 3) PHP의 광범위한 응용 및 생태계는 장기적인 영향을 미쳤지 만 버전 업데이트 및 보안 문제에 직면 해 있습니다. 4) PHP7의 출시와 같은 최근 몇 년간의 성능 향상을 통해 현대 언어와 경쟁 할 수 있습니다. 5) 앞으로 PHP는 컨테이너화 및 마이크로 서비스와 같은 새로운 도전을 다루어야하지만 유연성과 활발한 커뮤니티로 인해 적응력이 있습니다.

PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택Apr 16, 2025 am 12:16 AM

PHP의 핵심 이점에는 학습 용이성, 강력한 웹 개발 지원, 풍부한 라이브러리 및 프레임 워크, 고성능 및 확장 성, 크로스 플랫폼 호환성 및 비용 효율성이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 웹 서버와 우수한 통합 및 여러 데이터베이스를 지원합니다. 3) Laravel과 같은 강력한 프레임 워크가 있습니다. 4) 최적화를 통해 고성능을 달성 할 수 있습니다. 5) 여러 운영 체제 지원; 6) 개발 비용을 줄이기위한 오픈 소스.

신화를 폭로 : PHP가 실제로 죽은 언어입니까?신화를 폭로 : PHP가 실제로 죽은 언어입니까?Apr 16, 2025 am 12:15 AM

PHP는 죽지 않았습니다. 1) PHP 커뮤니티는 성능 및 보안 문제를 적극적으로 해결하고 PHP7.x는 성능을 향상시킵니다. 2) PHP는 최신 웹 개발에 적합하며 대규모 웹 사이트에서 널리 사용됩니다. 3) PHP는 배우기 쉽고 서버가 잘 수행되지만 유형 시스템은 정적 언어만큼 엄격하지 않습니다. 4) PHP는 컨텐츠 관리 및 전자 상거래 분야에서 여전히 중요하며 생태계는 계속 발전하고 있습니다. 5) Opcache 및 APC를 통해 성능을 최적화하고 OOP 및 설계 패턴을 사용하여 코드 품질을 향상시킵니다.

PHP vs. Python 토론 : 어느 것이 더 낫습니까?PHP vs. Python 토론 : 어느 것이 더 낫습니까?Apr 16, 2025 am 12:03 AM

PHP와 Python에는 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구 사항에 따라 다릅니다. 1) PHP는 웹 개발, 배우기 쉽고 풍부한 커뮤니티 리소스에 적합하지만 구문은 현대적이지 않으며 성능과 보안에주의를 기울여야합니다. 2) Python은 간결한 구문과 배우기 쉬운 데이터 과학 및 기계 학습에 적합하지만 실행 속도 및 메모리 관리에는 병목 현상이 있습니다.

PHP의 목적 : 동적 웹 사이트 구축PHP의 목적 : 동적 웹 사이트 구축Apr 15, 2025 am 12:18 AM

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP : 데이터베이스 및 서버 측 로직 처리PHP : 데이터베이스 및 서버 측 로직 처리Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기