五、基础及程序题(建议使用你擅长的语言:C/C++、PHP、Java)

5.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)

//冒泡排序(数组排序)
function bubble_sort($array)
{
$count = count($array);
if ($count <= 0) return false;

for($i=0; $i<$count; $i++){
       for($j=$count-1; $j>$i; $j--){
         if ($array[$j] < $array[$j-1]){
            $tmp = $array[$j];
            $array[$j] = $array[$j-1];
            $array[$j-1] = $tmp;
         }
       }
}
return $array;
}

//快速排序(数组排序)
function quicksort($array) {
if (count($array) <= 1) return $array;

$key = $array[0];
$left_arr = array();
$right_arr = array();

for ($i=1; $i<count($array); $i++){
       if ($array[$i] <= $key)
         $left_arr[] = $array[$i];
       else
         $right_arr[] = $array[$i];
}

$left_arr = quicksort($left_arr);
$right_arr = quicksort($right_arr);

return array_merge($left_arr, array($key), $right_arr);
}

6.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码。假设每个中文也是一个字符,普通的数字、符号、字母也是一个字符。(提示:GB编码的中文字符高位范围是 0x81-0xFE )

function GBSubstr($str, $len){
$count = 0;
for($i=0; $i<strlen($str); $i++){
if($count == $len) break;
if(preg_match("/[\x80-\xff]/", substr($str, $i, 1))) ++$i;
++$count;       
}
return substr($str, 0, $i);
}

function GBSubstr2($src, $start=0, $length=0){
$suffix="";
$len = strlen($src);
if ( $len <= $length ) return $src;

$cut_length = 0;
for( $idx = 0; $idx<$length; $idx++){ 
$char_value = ord($src[$idx]); 
if ( $char_value < 0x80 || ( $char_value & 0x40 ) )
$cut_length++;
else
$cut_length = $cut_length + 3; 

$curstr = substr($src, 0, $cut_length) ;
preg_match('/^([\x00-\x7f]|.{3})*/', $curstr, $result);
return   $result[0];
}

function CSubstr($str, $start=0, $length, $charset="gbk", $suffix=false){
if(function_exists("mb_substr")){
return mb_substr($str, $start, $length, $charset);
}
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";

preg_match_all($re[$charset], $str, $match);
$slice = join("", array_slice($match[0], $start, $length));

if($suffix) {
return $slice ."…";
}
return $slice;
}

7.写一个遍历指定目录下所有子目录和子文件的函数(提示:可以使用递归的方法)

function dir_all ( $path ) { 
$handler = opendir($path); 
while (false!==($tmp = readdir($handler))) {  
if(is_dir( "$path/$tmp" )) { 
if ($tmp=="." | $tmp=="..") continue; 
echo $tmp."<br>\n"; 
dir_all ("$path/$tmp"); 
} else {
echo $tmp ."<br>\n"; 


}

8.写出匹配邮箱地址和URL的两个正则表达式。类似下面的:
邮箱地址:user_name.first@example.com.cn
URL地址:http://www.example.com.cn/user_profile.php?uid=100 
(提示:使用标准的正则表达式,就是PHP中preg_* 类的正则处理函数能够解析的正则)

邮箱:/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
URL:/^http:\/\/[\w]+\.[\w]+[\S]*/

六、数据库技术题

6.写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)
MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十几个引擎

7.说出你所知道的三种以上开源数据库的名称(提示:想想目前国外流行的开源数据库)
MySQL、SQLite、BDB(Berkeley DB)、PostgreSQL、Firebird

8.MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?
Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些

9.说出MySQL 4.0和MySQL 4.1版本的最主要的两个区别。如果你使用过MySQL 5,请说说MySQL 5跟MySQL 4的主要区别。(后半题选作)

MySQL 4.1 主要是比MySQL 4.0多了子查询和字符编码的支持两个特点。
MySQL5增加的功能比MySQL4要更多,包括存储过程、视图、事务等等

10.MySQL数据库基本的三个优化法则是什么,除了增加硬件和带宽?(提示:从服务配置、应用、开发角度考虑)
(1)系统服务优化,把MySQL的key_buffer、cache_buffer、query_cache等增加容量
(2)给所有经常查询的字段增加适当的索引
(3)优化SQL语句,减少Ditinct、Group、Join等等语句的操作

七、综合技术题

14.请使用JavaScript写出三种产生一个Image 标签的方法(提示:从方法、对象、HTML角度考虑)

(1)var img = new Image();
(2)var img = document.createElement_xById(“image”)
(3)img.innerHTML = “<img src=”xxx.jpg” />”

15.请使用CSS样式,描述两种方法在当前列中只显示一个div对象
(1)<div style=”width:19999px;”></div>
(2)<div style=”clear:both;”></div>

16.请描述出两点以上XHTML和HTML最显著的区别
(1)XHTML必须强制指定文档类型DocType,HTML不需要
(2)XHTML所有标签必须闭合,HTML比较随意

17.出五种以上你使用过的PHP的扩展的名称(提示:常用的PHP扩展)
MB_Sring、Iconv、Curl、GD、SHM、libxml、socket、MySQL、PDO 等等

18.了解MVC模式吗?请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)
FleaPHP、Zend Framework、CakePHP、Symfony、Plite、php.MVC、PHP on Trax、Smutty 等等

19.写出10个以上你所知道的常用的Linux命令和它的功能
Ls 列目录
Cp 复制
Rm 删除
Mkdir 建立目录
Cd   切换目录
Ps   查看进程
Top 查看机器使用情况

20.使用过Vim编辑器吗?如果使用过,如何在vim里切分多个可视化窗口,包括横排和纵排。(本题选作)
横:split(sp)
纵:vsplit(vsp)

21.说说Linux下的find命令和grep命令的区别(本题选作)
Find:按照文件名查找
Grep:按照文件内容查找

22.请描述出OSI七层网络模型的名称,由下到上(可以使用中文描述)
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

23.说说下面这些这些协议的全称和中文解释(提示:都是工作在应用层)
SMTP、POP3、HTTP、FTP、DNS

SMTP (Simple Mail Transfer Protocol) 简单邮件传输协议
POP3 (Post Office Protocol 3) 邮局协议第3版
HTTP (Hypertext Transfer Protocol) 超文本传输协议
FTP   (File Transfer Protocol)文件传输协议
DNS   (Domain Name System and Domain Name Service protocol) 域名系统(服务)协议

24.使用过Memcache缓存吗,如果使用过,能够简单的描述一下它的工作原理吗?(本题选作)

Memcahce是把所有的数据保存在内存当中,采用hash表的方式,每条数据又key和value组成,每个key是独一无二的,当要访问某个值的时候先按照找到值,然后返回结果。Memcahce采用LRU算法来逐渐把过期数据清除掉。

25.请大致的说说Session的工作原理。(提示:与Cookie有相应的关系)

参考这里:http://www.yuanma.org/data/2006/1128/article_1872.htm

26.说说你所了解的搜索引擎包含那些技术?(本题选作)

爬虫(采集)、切词(分词)、索引(存储)、查询以及其他相关技术

八、项目及设计题

4.一个Web开发团队开发中,大致说说你所了解的所有成员的分工合作情况

PS: 自行判定

5.说说你做过的最得意的项目或者个人开发作品(可以是个人作品,也可以是合作项目)

PS: 自行判定

6.假设给你5台服务器,请大致的描述一下,如何使用你所熟悉的开源软件,搭建一个日PV 300万左右的中型网站

PS:自行判定

参考结构:
3台Web服务器,两台MySQL数据库服务器,采用Master/Slave同步的方式减轻数据库负载,Web服务器可以结合Memcahe缓存来减少负载,同时三台Web服务器内容一致,可以采用DNS轮训的方式来进行负载平衡

PHP经典面试题01的更多相关文章

  1. 有关C/C++指针的经典面试题(转)

    参考一: 有关C/C++指针的经典面试题 0.预备知识,最基础的指针 其实最基础的指针也就应该如下面代码: int a; int* p=&a; 也就是说,声明了一个int变量a,然后声明一个i ...

  2. 数据库MySQL经典面试题之SQL语句

    数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学 ...

  3. [转帖]分享Oracle的四道经典面试题,值得收藏

    分享Oracle的四道经典面试题,值得收藏 原创 波波说运维 2019-07-20 00:02:00 https://www.toutiao.com/i6713901660919300621/ 概述 ...

  4. 最强最全面的大数据SQL经典面试题(由31位大佬共同协作完成)

    本套SQL题的答案是由许多小伙伴共同贡献的,1+1的力量是远远大于2的,有不少题目都采用了非常巧妙的解法,也有不少题目有多种解法.本套大数据SQL题不仅题目丰富多样,答案更是精彩绝伦! 注:以下参考答 ...

  5. 20道JavaScript经典面试题

    该篇文章整理了一些前端经典面试题,附带详解,涉及到JavaScript多方面知识点,满满都是干货-建议收藏阅读 前言 如果这篇文章有帮助到你,️关注+点赞️鼓励一下作者,文章公众号首发,关注 前端南玖 ...

  6. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  7. 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)

    李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...

  8. 李洪强iOS经典面试题154- 通知与推送

    李洪强iOS经典面试题154- 通知与推送   通知与推送 本地通知和远程推送通知对基本概念和用法? image 本地通知和远程推送通知都可以向不在前台运行的应用发送消息,这种消息既可能是即将发生的事 ...

  9. 李洪强iOS经典面试题153- 补充

    李洪强iOS经典面试题153- 补充   补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...

随机推荐

  1. Python记录-基础语法入门

    # -*- coding: utf-8 -*- #数字计算 a=1 b=2 print(a+b) print(a*b) print((a+b)/1) #浮点数 print((a+b)//2) ##保留 ...

  2. C# 实现生产者消费者队列 (转)

    按语:按照下面文档,测试成功: https://www.cnblogs.com/samgk/p/4772806.html 开发过程中经常会碰到这样的场景:需要从一个地方获取一些数据,然后处理数据并将其 ...

  3. AD 常用策略

    配置WSUS 配置NTPS 配置用户配置文件漫游 配置漫游区磁盘配额 配置修改本地管理员用户名 配置修改本地管理员密码 配置网络验证(提示是否联网错误) 配置允许开设永久共享 配置允许开设共享打印机 ...

  4. JSON和JSONP具体是干神马的呢? (含jQuery实例)

    说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服 ...

  5. bootstrap-table和bootstrap-switch

    {% load staticfiles %} <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. SPSS 2019年10月24日 今日学习总结

    2019年10月24日今日课上内容1.SPSS掌握基于键值的一对多合并2.掌握重构数据3.掌握汇总功能 内容: 1.基于键值的一对多合并 合并文件 添加变量 合并方法:基于键值的一对多合并 变量 2. ...

  7. 伸缩布局 Flex

    其中在webkit内核的浏览器中使用时,必须加上-webkit-前缀,采用Flex布局的元素,称为Flex容器(flex container),简称”容器”.它的所有子元素自动成为容器成员,称为Fle ...

  8. MaskRCNN 奔跑自己的数据

    import os import sys import random import math import re import time import numpy as np import cv2 i ...

  9. Generative Adversarial Network (GAN) - Pytorch版

    import os import torch import torchvision import torch.nn as nn from torchvision import transforms f ...

  10. Word 查找替换高级玩法系列之 -- 通配符大全A篇

    1. 通配符大全一览 序号 特殊字符(不使用通配符) 代码(不使用通配符) 特殊字符(使用通配符) 代码(使用通配符) 1 任意单个字符 ^? 任意单个字符 ? 2 任意数字 ^### 任意数字(单个 ...