php面试必知必会常见问题
1 说出常用的10个数组方法
我觉得数组比较最能体现PHP基础语法的一个数据结构了,下面给大家列一下常用的10个关于操作数组的函数
in_array(判断数组中是否有某个元素)
implode(将数组按照一定规律分解)
json_encode(将数组转化成json)
sort(排序,有很多排序的函数这里就说一个)
array_push(将一个活多个单元压入数组的末尾)
array_merge(合并数组)
array_key_exists(检查键名是否存在于数组中)
array_unique(去除数组中重复的值,只能对一位数组起作用)
array_shift(移除数组中第一个单元)
php有很多关于数组的函数,但常用的就是这几个了,可能我说的还不是很合适,但没什么大问题。需要注意的是,不要为了应付面试而盲目的死记硬背php的数组函数,你像array_pop这样的函数,你倒是知道这样的函数,笔试的时候也打出来了,但当面试官问你,你平时怎么用这个方法,你不就噎菜了吗?!所以要写平时常用的
2 说出平时常用的操作字符串的方法,并解决具体问题
同上,字符串操作也是php的基础用法,下面尽可能全的罗列一下平时常用的字符串操作
substr(截取字符串)
strlen(获取字符串长度)
strpos(查找字符串首次出现的位置)
str_replace(字符串替换)
explode(将字符串按照规律转化成数组)
strtoupper(将所有字母变成大写)
strtolower
ucfirst(将字符串的首字母变成大写)
ucwords(将字符串中每个单词的首字母变成大写)
strrev(反转字符串,其实不是很常用)
substr_replace(替换字符串的子串,注意与str_replace的区别)
strip_tags(去除html和php标记,可以选择保留想要的标签)
trim(去除空格)
explode(分割成数组)
这些是比较常用的了,肯定还有一些我没有列举出来,毕竟php的字符串函数比较多又或者其他的函数我用的不多。另外,记住这个函数并不是目的,目的是会用,笔试的时候可不是简单的问你这些函数的名字,那都是要做具体的例子的。现在时间比较紧,有时间一定会举出10个例子来分析的
3 恒等于 貌似不应该把这个当做一个单独的知识点来说,但这确实是笔试题中经常考到的
反正我平时没有主动用过这个东西一次。“==”相比于"==="不同的是,前者之比较值的大小,后者会比较数据类型。举例说明
if(1 == '1'){echo "it's right";}
if(1 === '1'){}
很明显,前者是正确的。因为这两个变量的类型不同
4 三元运算符
它的一般定义谁都会有,$a = 1 ? 'one' :0;但是有一次笔试我见了一个比较变态的题目,多个三元运算符和其他运算符联合在一起,让我不知道先执行哪一个,举例说明
echo (true?'true':false?'t':'f');这个问题曾一段让我很郁闷,到底先执行哪一个呢?首先,肯定是从左到右的,echo ((true ? 'true' : 'false') ? 't' : 'f');这样就够清晰了吧,哈哈
记住这一原则就可
5 require和include的异同
这应该是让我们比较恶心的问题了,但这却也是经常考的问题
我们都知道的是require在执行出错时不会继续执行,include会继续执行,还有就是require一般放在文件的头部包含一个初始化文件之类的东西,而include一般是在语句中用到了那些文件包含过来
6 session和cookie
这也是面试中常问到的问题,最简单的回答常是session保存在服务端,大量的session会增大服务器的压力,cookie因为保存在客户端所以没有这些问题,但cookie因为这个特点所以相对来说不安全,这是我初学php的时候知道的
后来我知道了,session与cookie联系在一起是通过session_id联系起来的,而seesion_id是保存在cookie中的,这也就是为什么我清了cookie,session会失效的原因。当然我们也可以不将session_id保存在cookie里,一般大型网站不会将用户信息保存在session里,正如上面所说的因为会占资源,这时会将session保存在DB中,当然这也和集群有关,因为你如果使用了集群的话,会有多台服务器,你seesion保存在这台服务器上而处理的操作却通过另一台服务器的话就找不到session了。另外,session的过期时间,很多人都以为在php的配置文件中配置了就可以,其实这不是最好的方式,因为这个过期时间还取决于另一个参数,也就是过了这个你设置的时间session可能不会马上被清掉。所以我们将session保存在DB中。
7 面对对象
这几乎是每次面试都会问到的问题,而面试官又有几个能明白的呢?这里不详细介绍这个问题
8 对mvc的理解
这道是个不难理解的概念,现在只要是框架都用这种模式来处理问题了,mvc和smarty还不一样。smarty没有将m和c分开,也就是业务逻辑和控制器还是混在一起的,比较典型的例子就是ecshop。控制器controller负责调度数据,接受请求,具体处理数据的操作让模板model来完成,然后再通过控制器将值传给试图view
这是目前我考虑到的php常考的问题,后续会不断补充的
对于我们这种没有大数据处理经验的苦逼来说,只能业余时间多看些资料来弥补不足了,但这毕竟不如有真实工作经验来的有说服力
1 首先是扎实的sql语句,这是毋庸置疑的,下面讲的都是关于优化了,如果这个再不会的话就不应该了,这里我只介绍一个group by语句,我觉得这是所有语句中最难的一个
group by是根据字段分组,举个例子,订单表中,每个商品都有可能被买了多次,这里如何查询每个商品被购买的次数呢?
select count(*),goods_name from table group by goods_id 这可以将商品名称和购买数量取出来
2 sql语句的优化,说完了基础的sql语句,下面说一下sql优化。这里要注意的地方很多
一 尽量避免全局扫描,几乎没有将一个表中所有数据都使用的请求,对where order by使用的字段添加索引
二 应尽量避免在where字句中使用!= <>操作符,否则存储引擎会放弃使用索引而进行全局搜索
三 避免在where条件中使用or,这也会使存储引擎进行全局搜索
四 使用模糊搜索的时候,like '%string%',不会使用索引。like 'string%'会使用索引
五 慎用 in,可能也会导致全表检索。如果是连续的条件可以考虑使用between
六 在where条件中使用参数、表达式操作和对字段进行函数操作也会导致全表检索。select id from t where num/2=100应修改为select id from t where num=100*2
select id from t where substring(name,1,3)='abc' 应改成select id from t where name like 'abc%'
七 使用复合索引时,条件语句应该跟索引的顺序相同,否则不会使用索引导致全表扫描
八 很多时候使用exists代替in是个好的选择
九 并不是所有的查询都会使用索引,如果建立索引的字段有太多的重复值,即使建立了索引也不会用到。比如性别字段
十 索引的数量。索引不是越多越好,使用索引可以加快检索速度,但会降低insert和update的效率(哎呀,我写不下去了,网上多的是)
十一 尽量使用数字型字段,如果一个存储字段可以设置成数字类型就不要设置为字符串类型,具体为什么呢?首先,可以减少存储空间。其次可以提高检索速度
十二 能用char的尽量不用varchar,因为char是固定长度的,所以检索速度快。但是相对来说占空大,所以应该对固定长度的字段用char,如身份证号
关于sql语句的优化差不多就是这样,等以后有实例经验了在补充
3 mysqli的概念及使用
总有那么一群或牛逼或装逼的技术大佬,用发骚的声音问你,你平时操作数据库是用mysql提供的原生的方法还是怎样,你妹的我平时就知道这些你还想让我怎样
这里说一下mysqli相比于mysql的好处
一 mysql是非持续性连接,每次一个请求都会打开一个进程。而mysqli则因为啥永久连接,会使用同一个进程
二 mysqli可以同时处理多条sql,这是比较新鲜的,但这有什么用呢?
三 sorry,目前实在找不出其他的好处了
4 大数据量优化实例
大公司都会有这么一项笔试题,搞一个实例,多少多少条数据,用户访问量很高,问怎么设计表才能最优化。这都是各自的公司针对他们的具体情况出的问题,针对性比较强,网上也不好搜索
这里关于mysql的面试知识我就先说这么多,其实我说的只是皮毛,以后会不断增加的
这里我遇见的问题到是不多,毕竟我不是高级程序员而且大公司也都有专门的运维人员,而且面试好像也不是太重视你会不会这东西
1 了解常用的命令
我现在掌握了90个命令,其实已经足够了。真正平时常用的命令也就那么十几个,就像你在windows上,除了点击 浏览 新建 删除 编辑等操作一样,常用的也就那么几个
2 能写shell
这是我目前还没有掌握的,没资格说这些,不过我马上就要开始学shell了,哈哈
或者应该说js,但貌似现在用jquery的比较多,毕竟方便嘛,作为一名web开发人员,需要掌握这些歌东西真是一件快乐的事。jquery能做的事我大体上来说是两种,第一我们常见的特效,不过这偏前台。第二,跟后台进行数据交互(比如异步刷新页面用的就是ajax)
下面说两个例子,是我面试时遇到的
1 ajax如何解决跨域问题
php面试必知必会常见问题的更多相关文章
- Java面试必知必会(扩展)——Java基础
float f=3.4;是否正确? 不正确 3.4是双精度,将双精度赋值给浮点型属于向下转型,会造成精度损失: 因此需要强制类型转换: 方式一:float f=(float)3.4 方式二:float ...
- Java面试必知必会:基础
面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力.但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点. 一.基础 包括: 杂七杂八 面向对象 数 ...
- 你必知必会的SQL面试题
写在前面的话 本文参考原博<走向面试之数据库基础:一.你必知必会的SQL语句练习-Part 1>和<走向面试之数据库基础:一.你必知必会的SQL语句练习-Part 2>进行练习 ...
- 关于TCP/IP,必知必会的十个经典问题[转]
关于TCP/IP,必知必会的十个问题 原创 2018-01-25 Ruheng 技术特工队 本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. 一 ...
- 脑残式网络编程入门(三):HTTP协议必知必会的一些知识
本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...
- 《SQL必知必会》笔记
SQL必知必会(第4版) 作者:[美]Ben Forta 本书介绍了sql在不同数据库工具(Oracle.SQLite.SQL server.MySQL.MariaDB.PostgreSQL...)是 ...
- TCP/IP 必知必会的十个问题
本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. 一.TCP/IP模型 TCP/IP协议模型(Transmission Control Protoc ...
- TCP/IP,必知必会的
文章目录 前言 TCP/IP模型 数据链路层 网络层 ping Traceroute TCP/UDP DNS TCP连接的建立与终止 TCP流量控制 TCP拥塞控制 0 前言 本文整理了一些TCP/I ...
- 第4节:Java基础 - 必知必会(中)
第4节:Java基础 - 必知必会(中) 本小节是Java基础篇章的第二小节,主要讲述抽象类与接口的区别,注解以及反射等知识点. 一.抽象类和接口有什么区别 抽象类和接口的主要区别可以总结如下: 抽象 ...
- 第3节:Java基础 - 必知必会(上)
第3节:Java基础 - 必知必会(上) 本篇是基础篇的第一小节,我们从最基础的java知识点开始学习.本节涉及的知识点包括面向对象的三大特征:封装,继承和多态,并且对常见且容易混淆的重要概念覆盖和重 ...
随机推荐
- 浏览器内置http抓包工具软件
使用 360极速浏览器抓取HTTP的 请求头 与 响应头: *** 从 工具--->开发人员工具(F12) 或者 直接按下 F12键,打开抓包工具: **** 按下F5刷新: 双击其中的 Nam ...
- 基于MATLAB的多项式数据拟合方法研究-毕业论文
摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...
- pwd命令的实现
pwd 命令描述 Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd ...
- 第六周课上测试-3-ch02补充作业
实验要求: 编写一个程序 "week0603学号.c",运行下面代码: short int v = -学号后四位 unsigned short uv = (unsigned sho ...
- 【原创】user.id字段
odoo中User.ID 字段是用户登录表 res_users 中的字段,所以要关联某个用户或是判断某个用户,可以利用该字段. 例如:在某个 界面中的domain中,要求显示的是关联某用户的单子,则如 ...
- MySQL优化Explain命令简介(二)
type列 MySQL手册上注明type列用于描述join type,不过我们认为把这一列视为对access type--即MySQL决定如何在表中寻找数据的方式的描述,更加合适一些,以下所示从最坏情 ...
- P3374 【模板】树状数组 1(单点增减,区间求和)
P3374 [模板]树状数组 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示 ...
- cogs1341 永无乡
cogs1341 永无乡 打了一发替罪羊树. 鬼故事:替罪羊树去掉重构(变成裸的二叉排序树)依然跑得过= = 启发式合并.每次把小的里面所有东西往大的里面一丢,每个点最多被丢\(log_2n\)次(丢 ...
- Python 爬虫之模拟登录
最近应朋友要求,帮忙爬取了小红书创作平台的数据,感觉整个过程很有意思,因此记录一下.在这之前自己没怎么爬过需要账户登录的网站数据,所以刚开始去看小红书的登录认证时一头雾水,等到一步步走下来,最终成功, ...
- WPF获取窗口句柄
通过WPF的互操作帮助类WindowInteropHelper,相关连接:https://msdn.microsoft.com/zh-cn/library/system.windows.interop ...