首页 > 编程 > PHP > 正文

PHP面试总结

2020-03-22 19:04:28
字体:
来源:转载
供稿:网友
  •   从8月15号来到北京一直到今天,一月有余。来的这段时间一直准备笔试面试,大大小小的公司,乱七八糟面了10多家,近期才安顿下来。面试的这段时间感觉自己成长了不少。初来到这个陌生的城市一脸茫然,不会乘地铁、不会有挤公交、不会恰如其分的生活。。。

      面试是进入职场的第一道坎,因为我本身学校太一般的问题在面试中遇到了各种不爽,和那些高学历的相比自己真是信心大跌。我面试的方向是php开发工程师,主要做网站后台、APP接口等。我所面试的公司、试题、心得都在我的个人网站上,感兴趣的可以看看:http://dwz.cn/1KMpea。下面是我这段时间总结的面试方面的常考常问的知识点,希望对大家有所帮助,不对之处欢迎指出。

    总结:

    php部分我是按照面试常问的问题总结的,下面的问题在面试中出场率很高。问题比较基础

    --------------------PHP部分---------------------

    PHP中几个输出函数echo,print(),print_r(),sprintf(),var_dump()的区别

    1:echo:是语句不是函数,没有返回值,可输出多个变量值,不需要圆括号。不能输出数组和对象,只能打印简单类型(如int,string)。

    2:print:是语句不是函数,有返回值 1 ,只能输出一个变量,不需要圆括号。不能输出数组和对象,只能打印简单类型(如int,string)。

    3:print_r:是函数,可以打印复合类型,例如:stirng、int、float、array、object等,

    输出array时会用结构表示,而且可以通过print_r($str,true)来使print_r不输出而返回print_r处理后的值

    4:printf:是函数,把文字格式化以后输出(参看C语言)

    5:sprintf:是函数,跟printf相似,但不打印,而是返回格式化后的文字(该函数把格式化的字符串写写入一个变量中,而不是输出来),其 他的与printf一样。

    例如: $str = 'Hello'; $number = 123;

    $txt = sprintf('%s world. Day number %u',$str,$number); //输出:Hello world. Day number 123

    6:var_dump():函数,输出变量的内容、类型或字符串的内容、类型、长度。常用来调试。

    写个函数来解决多线程同时读写一个文件的问题。
     1 <?php 2     $fp = fopen('/tmp/lock.txt','w+'); 3     if(flock($fp, LOCK_EX)){// 进行排它型锁定 4         fwrite($fp,'Write something here'); 5         flock($fp, LOCK_UN);// 释放锁定 6     }else{ 7         echo 'Couldn't lock the file !'; 8     } 9     fclose($fp);10 ?>

    禁掉cookie的session使用方案,设置session过期的方法,对应函数:

    通过 url 传值,把session id附加到url上(缺点:整个站点中不能有纯静态页面,因为纯静态页面session id 将无法继续传到下一页面) 通过隐藏表单,把session id 放到表单的隐藏文本框中同表单一块提交过去(缺点:不适用<a>标签这种直接跳转的非表单的情况) 直接配置php.ini文件,将php.ini文件里的session.use_trans_sid= 0设为1,(好像在win上不支持) 用文件、数据库等形式保存Session ID,在跨页过程中手动调用
     1 第一种  setcookie() 直接用setcookie设置session id的生命周期。 2  3     $lifetime=60; //保存1分钟  4     session_start();  5     setcookie(session_name(), session_id(), time()+$lifetime, '/'); 6 第二种  session_set_cookie_params()     7     $lifetime=60;//保存1分钟 8     session_set_cookie_params($lifetime); 9     session_start();10     session_regenerate_id(true);11     其中session_regenerate_id();方法用于改变当前session_id的值,并保留session中数组的值。参数默认为 false,如果设置为true则改变session_id的值,并清空当前session数组。

    json格式数据有哪些特点

    JSON 一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、 Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

    JSON的结构基于下面两点

    1. '名称/值'对的集合不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等
    2. 值的有序列表多数语言中被理解为数组(array)
    php获取文件内容的方法,对应的函数 1:file_get_contents得到文件的内容(可以以get和post的方式获取),整个文件读入一个字符串中 2:用fopen打开url, 以get方式获取内容(借助fgets()函数) 3:用fsockopen函数打开url(可以以get和post的方式获取),以get方式获取完整的数据,包括header和body 4:使用curl库获取内容,使用curl库之前,需要查看php.ini,查看是否已经打开了curl扩展 php数组函数常见的那些? (array_merge、in_array的作用) 一、数组操作的基本函数 array_html' target='_blank'>values($arr); //获得数组的值 array_keys($arr); //获得数组的键名 array_flip($arr); //数组中的值与键名互换(如果有重复前面的会被后面的覆盖) array_search('PHP',$arr); //检索给定的值,加true则是严格类型检查 array_reverse($arr); //将数组中的元素翻转 in_array('apple', $arr); //在数组中检索apple array_key_exists('apple', $arr); // 检索给定的键名是否存在数组中 array_count_values($arr); // 统计数组中所有值出现的次数 二、数组的分段和填充 array_slice($arr, 0, 3); //可以将数组中的一段取出,此函数忽略键名(数组的分段) array_splice($arr, 0, 3,array('black','maroon')); //可以将数组中的一段取出,与上个函数不同在于返回的序列从原数组中删除 array_chunk($arr, 3, TRUE); //可以将一个数组分割成多个,TRUE为保留原数组的键名(分割多个数组) 四、数组与栈,列队 array_push($arr, 'apple', 'pear'); //将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数 array_pop($arr); // 将数组栈的最后一个元素弹出(出栈) array_shift($arr); //数组中第一个元素移出并返回(数组长度减1,其他元素向前移动一位,数字键名改为从零计数,文字键名不变) array_unshift($arr,'a',array(1,2)); //在数组的开头插入一个或多个元素

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表