第二十一套

1.不用php的库函数,试写出一个字符串翻转函数, 例如”abc”变成”cba”?

function getRev($str,$encoding='utf-8'){
        $result = '';
        $len = mb_strlen($str);//返回字符串的长度
        for($i=$len-1; $i>=0; $i--){
            $result .= mb_substr($str,$i,1,$encoding);
            //截取字符串mb_substr($str,$start,$length,$encoding);
        }
        return $result;
    }
    $string = 'OK你是正确的Ole';
    echo getRev($string);

2.写出一些优化mysql数据库(表)的方法?

1.选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM
2.使用连接join代替子查询
3.使用union 联合代替手动创建的临时表
4.建立索引
5.使用外键
6.优化查询语句
7.optimize table清理碎片

3.获取post参数的php全局变量是什么?如何判断post来的参数的正确性?

$_POST
Empty() trim()

4.假设有一个订单表,字段如下 id, user_id, goods_name, goods_type(商品类型), goods_price,t, 试写一个sql语句,列出某用户购买商品类型总数且计数大于10的,比如,有下面的数据例子,袜子将不能被列出

User_id, goods_type, 总计
10,  帽子, 38
10,衣服, 20
10,裤子, 30
10, 袜子, 9

select user_id ,good_type,count(good_type) num from goods where user_id=10 group by goods_type having num>10;

5.php有那些模板,模板有那些优缺点?

smarty模版引擎
优点:
1.访问网站的速度快
2.缓存技术:smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页.
3.smarty可以自定义插件,插件实际就是一些自定义的函数。
4.模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
缺点:
1.需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。
2.小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用smarty会丧失php开发迅速的优点。

6.防止sql注射漏洞用的函数是什么?

addslashes(string) 函数返回在预定义字符之前添加反斜杠的字符串。

7.你用什么方法检查php脚本的执行效率(脚本执行时间)和数据库sql的效率(通常是sql的查询时间),并定位和分析脚本执行和数据库查询的瓶颈所在?

1.一般在代码开头记录一个时间,结尾记录一个时间,取差值.或者xdebug测试工具.
2.数据库SQL的效率
sql的explain(mysql),启用slow query log记录慢查询。

8.请写一个验证email正确性的正则表达式

/[0-9a-z]+@[0-9a-z]([\.][0-9a-z]+)+/

9.有一个整数数组,不用php库函数,写一个函数,返回该数组中的第二大数,尽量保证较低的时间复杂度。

冒泡排序

function sortsort($data) {
    foreach($data as $v) {
        $n++;
    }
    for ($i = 0; $i < $n-1 ; $i ++) {
        for ($j = 0 ; $j < $n-1-$i; $j ++) {
            if ($var[$j]< $var[$j+1]) {
                $temp = $var[$j];
                $var[$j] = $var[$j+1];//将大的放到前面
                $var[$j+1] = $temp;
            }
        }
    }
}
$array = Sortsort($arr);
echo ‘第二大值为’.$array[1];

10.简写一个jqueryajax异步发送的例子,描述一下ajax在页面中的功用。

局部异步更新页面,不整个刷新加载页面,只更新局部数据,
保持当前页面状态,节省数据量和重复查询请求



你可能感兴趣的:(PHP-面试题总集)