工作要求:
- 协助完成后端服务器架构优化、模块测试
- 熟悉thinkphp5.0(看tp5文档函数、PHP函数)
- 熟悉Linux;熟悉MySQL及Redis相关技术(复习Linux mysql语句)
- 对高并发、高可用架构有了解(??)
PHP函数篇
-
处理数组:
1、求组中最大数和最小数:max ( array $values ) /min ( array $values );
2、从小到大排序数组/从大到小排序数组:sort(array $arr) / rsort(array $arr);
3、出栈 / 进栈 : array_pop(array $arr);(删除并返回最后一个数组) ; array_push(array $arr, mixed $value1 );将一些东西进栈。
4、切割和合并:array_slice(array $arr,int $star,int n u m ) ; a r r a y m e r g e ( num); array_ merge( num);arraymerge(arr1,$arr1);(ps:array_merge使用:当有重复的键名时,值会被覆盖);合并:array_merge_recursive(); (PS:当有重复的键名时,值不会会被覆盖)
5、查询数组位置:array_search(“str”, $arr);
6、查询数组中是否存在键: array_key_exists ( ‘first’ , $search_array )(放回boolean)
7、计算数组总数:array_sum( $arr);
8、移除数组中的重复值:array_unique( $arr);
9、检查数组中是否有某个值:in_array("", $arr);
10、 print_r() 函数可以打印输出整个数组内容及结构,按照一定格式显示键和元素。注意 print_r() 函数不仅是只用于打印,实际它是用于打印关于变量的易于理解的信息。
11、var_dump() 函数也可以用于打印数组的数据及结构。不过 var_dump() 函数功能比 print_r() 更强大,可以同时打印多个变量且给出变量的类型信息
12、array_count_values() 函数用于统计数组中所有的值出现的次数,返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数 -
处理字符串
PHP处理字符串的常用函数?(重点看函数的‘参数’和‘返回值’)
①trim()移除字符串两侧的空白字符和其他字符;②substr_replace()把字符串的一部分替换为另一个字符串;③substr_count()计算子串在字符串中出现的次数;④substr()返回字符串的一部分;⑤strtolower()把字符串转换为小写字母;⑥strtoupper()把字符串转换为大写字母;⑦strtr()转换字符串中特定的字符;⑧strrchr()查找字符串在另一个字符串中最后一次出现;⑨strstr()查找字符串在另一字符串中的第一次出现(对大小写敏感);strrev()反转字符串;strlen()返回字符串的长度;str_replace()替换字符串中的一些字符(对大小写敏感);print()输出一个或多个字符串;explode()把字符串打散为数组;is_string()检测变量是否是字符串;strip_tags()从一个字符串中去除HTML标签;mb_substr()用来截中文与英文的函数
- 其他函数
1、 isset()使用::bool isset ( mixed var );
若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
2、
基础知识篇
1、0=null=false=‘0’=‘’;
原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的;
老调重提的面试知识点
-
Get与post的区别
-
Get从服务器获取数据,post向服务器提交、修改数据
-
Get传值在url中可见,post在url中不可见
-
Get传值一般在2KB以内,post传值大小可以在php.ini中进行设置
-
get安全性低,post安全性较高,执行效率却比Post高
-
数据库查询优化:
①优化SQL语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询;②数据表中创建索引;③对程序中经常用到的数据生成缓存; -
Print、echo、print_r有什么区别?
① echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出echo会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。
② print 是打印字符串
③ print_r 则是打印复合类型 如数组 对象
- SESSION与COOKIE的区别?
①存储位置:session存储于服务器,cookie存储于浏览器
②安全性:session安全性比cookie高
③session为‘会话服务’,在使用时需要开启服务,cookie不需要开启,可以直接用
编程篇
1、求斐波那契数组(1、2、3、5、8…):
function arrFibo($len){
$arr[0] = 0;
$arr[1] = 1;
for($i=2;$i<$len;$i++){
$arr[$i] = $arr[$i-1]+$arr[$i-2];
}
return $arr;
}
print_r(arrFibo(10));
2、数组逆序( 不能使用rsort、array_reverse函数)
$arr = array("a","b","c",1,10);
4 $i = "";//要替换位置的数的下标
5 $j = "";//临时变量
6 $k = "";//被替换位置的数的下标
7
8 $len = count($arr);
9 $half_len = floor($len/2);//向下取整,取整的值是循环的次数
10
11 for($i=0;$i<$half_len;$i++){
12
13 $j = $arr[$i];
14
15 //判断数组个数奇偶
16 if($len%2!=0){ //奇数
17
18 $k = $half_len*2-$i;
19 }else{
20
21 //偶数
22 $k = $half_len*2-$i-1;
23 }
24
25 $arr[$i] = $arr[$k];
26 $arr[$k] = $j;
27 }
28
29 echo "<pre>";
30 print_r($arr);
31 echo "</pre>";
排序的五大算法:冒泡排序
<?php
$arr = array(1,3,2,9,5,4);
function maopao($a){
$num = count($a);
for($i = 0;$i<$num;$i++)
{
for($j = $i+1;$j<$num;$j++)
{
if($a[$i]>$a[$j])
{
$temp = $a[$i];
$a[$i] = $a[$j];
$a[$j] = $temp;
}
}
}
return $a;
}
print_r(maopao($arr));
?>