网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月01日漏签0天
php吧 关注:280,475贴子:1,321,179
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 首页 上一页 1 2 3 4 5 下一页 尾页
  • 62回复贴,共5页
  • ,跳到 页  
<<返回php吧
>0< 加载中...

回复:面试题目分享

  • 取消只看楼主
  • 收藏

  • 回复
  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
面完第一家了,我想说,不愧是深圳啊。
这题目出的很有水平,又不会太难,也不会太容易。
然后我感觉自己凉凉了,晚一点再更新面试题。


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
来啦来啦,更新早上的面试题。
先来开胃菜,一般基础稳固的人,记忆一下,下次就能回答出来了。
php大小写
函数、类关键词大小写不敏感。
变量、常量、数组健名大小写敏感。
魔术变量不区分大小写,不过推荐大写。
mysql大小写
linux系统下:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、字段内容默认情况下是大小写不敏感的。
mysql中控制数据库名和表名的大小写敏感由参数lower_case_table_names控制,
为0时表示区分大小写,
为1时,表示将名字转化为小写后存储,不区分大小写。
字段值的大小写由mysql的校对规则来控制。
提到校对规则,就不得不说字符集。
字符集是一套符号和编码,校对规则是在字符集内用于比较字符的一套规则。
一般而言,校对规则以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束 。
比如 utf8字符集,
utf8_general_ci,表示不区分大小写,这个是utf8字符集默认的校对规则;
utf8_general_cs表示区分大小写,
utf8_bin表示二进制比较,同样也区分大小写。
git操作
恢复文件:请看cnblogs点com斜杠liuq斜杠p斜杠9203087点html
psr标准
1. 纯php代码文件不写关闭标签;
2. 常量要大写;
3. 每行代码不超过80字符
4. 类名,必须符合大写开头的驼峰命名法;
5. 类的方法,必须符合小写开头的驼峰命名法;
6. 缩进必须为4个空格,而不能是Tab键;
7. 命名空间namespace后一定要空一行;
8. 使用use引入命名空间,写完了所有的use以后,最后一行use后必须空一行;
9. 类的起始括号和结束括号都要另起一行;
10. 类的每个属性和方法都要加上可见性;
11. 类的方法的起始括号和结束括号都要另起一行,且起始括号后没有空格,结束括号前没有空格;
12. 方法有多个参数时,每个参数的逗号后面加一个空格;如果参数非常多,每个参数占一行;
13. PHP的控制结构包括if、else、elseif、switch、case、while、do while、for、foreach、try和catch。开始括号前必须有一个空格,控制结构关键词后面的起始括号应该和控制结构关键词写在同一行;
14. 闭包函数在声明时,function关键词后必须有一个空格,同时use关键词前后也必须有一个空格。


2026-01-01 18:07:10
广告
不感兴趣
开通SVIP免广告
  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先吃个饭,回来准备更新一些有难度的内容。
内容预告:
1. 索引命中
2. swoole


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
吃完饭咯,不知不觉就花了几百块,才2天啊
其实这块内容,我也只是粗略过了一遍,所以在写的时候也去翻别人的博客研究。
Mysql版本为5.7.14,注意一下。
首先,咱们来聊一下索引。
索引到底是个什么鬼?
其实索引就好像是书签,当你翻看书的时候,如果之前有插上标签,那就很容易找到你想要看的那一页。
那么,是不是只要你建了索引,就一定能用上呢?
咱们继续用书作类比,如果我们的书签有很多,各种花样的都有,并且没有遵循一定的规律。那么这个书签就相当于没用,还不如一页一页翻下去查找。
常见情况——条件中有or:
这里并不是说有or,就一定不能命中索引。
譬如select xxx from table_name where sss = '111' or ttt = 'test',在这条语句里面存在2个条件,如果只有sss字段建立了索引,ttt字段没有建立索引的话,查询的时候是不会走索引的,它会进行全表扫描。
来看下面的例子,这个表很简单,只有id、name、age三个字段,我给name建了一个唯一索引。下面是建表语句:

现在我执行sql语句:“select * from user where name='tim';”
我们看一下,有没有使用到索引,主要是看type字段。

好的,我们看到这条sql使用到了索引。
那如果是刚刚提到的“where sss = '111' or ttt = 'test'”这种形式呢?特别提醒,ttt字段没有建索引!

可以看到,是没有使用到索引的。Type字段为All,表示此时进行的是全表扫描。
然后我给age字段也加上一个普通索引,就发现可以使用到索引。

故事好像要告一段落了,但是此时我发现网上有人说:如果条件里面有主键,那么or也是可以使用到索引的。我来验证一下,我把age的索引去掉,再执行如下语句:

实测是没有效果的,扫描了全表。
总结如下:
1)如果只建了一个索引,用or是会导致全表扫描的;
2)但如果你or条件的字段也建了索引,那就能使用到索引。
为了阅读体验,分个段。。。


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
昨晚写着写着,情绪有点down,就和青旅的室友聊天去了。
现在继续更新哈。
Mysql的索引有2种,B-tree索引、Hash索引。
Btree索引
使用条件:
· 精确查询
譬如age字段有一个普通索引,查询条件为 age = 21。
(这个就不演示了。。。)
· 匹配联合索引最左侧的索引的查询
没有使用过联合字段的,赶紧去百度一下哦。
譬如联合索引是(name,age),
查询条件为name='tim' and age=21,或者 仅有name='tim'时,可以使用到该联合索引。

· 匹配范围值的查询
譬如age字段有一个普通索引,查询条件为age>21 and age < 24。
又或者是age BETWEEN 18 AND 30。

· 精确匹配联合索引左侧并范围匹配另外一列
如name是精确匹配,age是范围匹配,可以使用到联合索引(name,age)。


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
昨天下午回去之后,投了一遍。
感觉前程无忧、智联招聘、拉勾、boss都投遍了,然而早上也就6、7个电话。
有的是让我去做前端的,有的公司就只有几个人,还有的看了一下经验要求3、4年以上。
反正就是各种不合适吧,就没有去面试。
然后也跟朋友、家里人聊过了,都感觉我的经验少了点,就算高薪进去了,也很难稳住脚步。
基于这些考虑吧,我想着先去广州那家公司做一下。多累积点项目经验先,毕竟之前公司都比较小,也没有太多团队合作的经验。
学习计划方面呢,
打算业余时间多掌握一门框架——Laravel。
数据结构与一些常用算法也要学习一下。
这些都学完以后,打算研究一下TP的源码,还有PHP运行原理、Swoole底层的一些机制。
这样PHP方面的知识就大概学完了,接着我就会进行Golang、Docker、k8s、消息中间件、Mysql深度扩展的学习与实践,看看能不能弯道超车。
回到广州再继续更新哈,索引跟swoole还是很有必要掌握的。
其实面试写题目我是一点都不抗拒的,正好可以看一下自己哪块知识记得不牢或者根本就没了解过。但是反对那种特别没有意义的面试题,就是那种纯粹问函数用法的面试题。
先这样,坐车去啦。


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
深圳—>广州,然后半个钟后广州—>佛山。
心累的时候,需要回家休息一下。
晒一下老家的办公环境


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
233333,楼主又来更新了。
这几天有点忙,更新晚了。
先说说今天上班的情况吧,
一去就填表(各种表),然后绕着公司做自我介绍,尴尬得一逼。心里在想: 我是做开发,还是做销售啊。。。
然接着就是尴尬无比新人期,安排我去看一下CI框架。CI框架不愧是最简单的框架,看了一会儿,发现。。。看完了
然而本着能混一天,绝不努力一天的原则,我选择了去看源码分析,这好像更加努力
快下班的时候,同事打算出个小问题考考我。很正常,试探实力嘛。
结果,有趣的事情发生了。程序有bug
于是乎,那个同事就很尴尬了,到处问人。以为是数据库字段问题,后来发现并不是。
那我呢,也很无语。我就说试一下debug吧,然后就开始排查。他之后给了一个测试环境给我,叫我改测试环境的文件。
WTF???
难道不应该在本地调试么?
你给了一份本地的测试代码给我,再告诉我测试用的数据库账户信息,我不就能本地追踪问题了么。
于是乎,女票上线了。没带钥匙,所以我就先走人了。
总的来说,这公司。。。至少是这个部门,应该。。。很好混
索引命中今晚继续更新,期待吧


2026-01-01 18:01:10
广告
不感兴趣
开通SVIP免广告
  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Btree索引使用限制
1. 如果没有用到联合索引左侧的字段,只使用到后侧的字段进行查询,无法使用联合索引。
先来看看表结构

现在尝试将条件设为art字段

很清楚可以看到,这里进行的全表查询。
2.使用联合索引时,不能跳过索引中的字段。
先来看看表结构

现在我们把查询条件设为name、birth

这里需要关注的是key字段,说明只使用到了name。
3. not in和<>操作无法使用索引。
现在我给age字段添加索引,看看使用not in是否可以使用到索引。

那如果是in呢?

in是可以的!
再来看看<>的情况,

也是不可以的,大家记住哦。
4. 如果查询中有某个列使用了LIKE模糊查询,则其右边的所有列都无法使用索引。

这个例子建立的是联合索引,我发现它竟然只使用了age做索引。


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
HASH索引
· 只有精确查询才能使用
使用限制
· Hash必须进行二次查找
会用hash索引,数据库会进行2次查询。
· Hash索引无法用于排序
· Hash索引不支持范围查找


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
明天再更新swoole,我也得再看多点文章才行。
大家晚安啦


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前言
因为Swoole是运行在php-cli模式下的,而php-cli模式有下述特征:
echo var_dump,phpinfo等输出直接输出到控制台
因此可以认为,Swoole可以通过上诉输出语句输出内容到控制台。
Swoole能做什么?
相信很多人或多或少都有听闻过Swoole,但是具体它是一个什么东西呢?
先别急,我们先来看看可以使用Swoole来做一些什么东西吧。
1. 异步Mysql、异步Redis
什么场景会用到异步的方式去操作数据库呢?
譬如点赞、文章阅读数、视频播放数,这些操作我们根本就不关心它要执行多久,反正它执行就对了。
而在我的个人项目里面呢,我主要使用到了异步的Mysql进行新闻内容的采集,因为这个操作比较耗时,我就直接使用异步Mysql去做了。
2. 数据库连接池
连接池介绍在70楼。
3. 异步任务
异步任务的使用场景还是那种比较耗时的操作。
详细情况可以看我的笔记blog点csdn点net/lihaoen666/article/details/87209285
4. 毫秒定时器
如果你学过linux,应该知道linux也有定时器crontab。
但是Swoole的定时器是支持毫秒级别的,而crontab最小单位是分钟。
5. 共享内存
这里主要指的是Swoole Memory模块的Table,它是基于共享内存实现的。
因为Swoole是多进程的,多进程通信可以使用Table进行数据共享。
6. 多进程
多进程有什么用?
额...其实它也是用来解决耗时任务的问题,试想一下现在你需要使用file_get_contents()获取10个网址的内容。假设每次都要耗时1s,那么10个就是要10s了。
而如果你开启10个子进程,每个子进程负责获取一个网址的内容,那么执行时间就只需要1s。
看着很好是吧?
但其实这里面坑多着呢!
什么坑?
最常见的坑就是由于多线程切换导致上下文内容不一样,进程里面的变量会产生一些微妙的变化。
咱们来举个小例子,
我们有一个变量$count值为1,
进程a看到还没到0,想要进行-1操作,还没等进程a做-1操作呢,
这时候切换到进程b,进程b也要进行-1操作,并且它执行成功了。
现在又切换回进程a,它直接执行了-1操作,$count变为-1。
这样的结果不是我们想要的。
所以使用多线程,一定要特别注意这些变量!
我在学习的时候,曾经使用TP5.0适配过Swoole,总的来说就是让Swoole在Worker进程开启的时候加载TP5框架文件。
其中要注意的是,因为Swoole进程是常驻内存的,有一些全局变量需要做出一些适配性修改才能用。
第二个要注意的是,如果你使用了多进程,记得保持每一个进程都单独连接数据库,不然会发生问题,这里再次提一下,你可以使用连接池。
现在TP5.1版本已经接入Swoole,但还是有一些坑。
如果是学习的话,建议直接看某课的那个sinwa的教程,注意和视频保持版本一致!
PS:其实我觉得这种适配真的很不稳定,说不定你升级一下框架,又不好使了。
还不如直接学基于Swoole开发出来的框架,这里推荐下EasySwoole,非常简单。
面试题的话,还要再等等。


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
再补充2点:
Swoole还可以做下面的东西:
1. 异步TCP/UDP网络客户端
2. Http/WebSocket服务器端/客户端
我一开始想学,主要就是看中了Websocket这一点
3. 异步文件读写


  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
面试问题:
1. swoole worker 的运行方式?
2. swoole获取get、post参数的方法?
3. swoole是不是只能通过echo、print()输出内容到控制台?
大家可以试着回答一下,其实都比较简单。


2026-01-01 17:55:10
广告
不感兴趣
开通SVIP免广告
  • 爱折腾的鼎晨
  • 面向对象
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
今天分享一道字符串题目,
原地址 :juejin点im/post/5c7645eb51882578860c2dc6
作者:sizeofio
$str = 'php';
$str['name'] = array('test');
var_dump($str);
前言
php的string实现是由一个字节组成的数组,再加上一个整数指明缓冲区长度。
既然是数组,那我们就可以使用key去访问字符串中的字符。
譬如,$str[0]表示的就是p。
分析
其次,字符串这个数组的key只能是int类型。
所以上main的‘name’需要做int类型转换,转换结果为0。
现在第二行已经变成变成$str[0]=array(‘test’)。
字符串数组的值只能是字符串,所以array(‘test’)需要做类型转换,转换结果是’Array’。
又因为字符串长度是固定的,这里只能存放一个字符,就变成’A’了。
此时第二行结果变成$str[0]=’A’;
这么一来,结果便是’Ahp’。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 首页 上一页 1 2 3 4 5 下一页 尾页
  • 62回复贴,共5页
  • ,跳到 页  
<<返回php吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示