面试的关于PHP的3个问题

yinjiephp 2014-12-26 08:29:11
昨天面试心情特别不好,先说下我的经历吧
大学计算机专业,今年30岁。
大学里面学的MYSQL。后来毕业后进了一家公司开始前期我学的HTML+css.后来单位干PHP走的,老板让我干起来,好吧。这一年半的时间学习了很多东西php,COOKIE,SESSION+正则+smarty+ajax+js+jquery+Thinkphp后来又学习了dede
再后来干维护的也走了老板又让我干起来 学了MYSQL优化(建立索引啊,分表啊)别的没了
这一年半的时间干了4个项目 第一个纯MVC结构,没用框架 (我记得6个页面是个雇员管理系统)
第二个项目用了框架,在这之前干PHP的走了几个人 客户要求那个管理系统增加功能,可是他们写的很乱(没人敢碰)所以DOWN掉了老板说用框架把好维护(这又学习了THINKPHP)
那是个项目类似WEBQQ带离线功能用了SMARTY,AJAX,JQUERY
第三个项目是个CMS,原本要求用框架开发,可是客户要急,没办法只好用DEDE进行2次开发。
第4个项目也是个CMS,他就是给客户开发一个电影网站,那时候开发部算我在内就4个人了,没办法又用了DEDE。
后来维护的也走了我学习了点优化觉得没意思了。。也辞职了。
我现在特别迷茫,不知道自己该干什么?什么都懂一点,什么又都不深入。PHP再往下学该怎么学?
今天去面试,面试官问了我3个问题一个都回答不上来:
第一个:PHP如何检验上传的不是黄色图片:不知道
第二个:一张表5000万数据,就2个字段一个ID自增一个EMAIL,怎么查询163与126用户?我答不上来,因为我知道索引管前不管后。最后只能回答用LIKE 面试官冷笑下。
第三个:你怎么实现验证2个用户用同一个用户名密码登录:这个我答上来点:我说在表增加个字段,上线为1下线为0,面试官问我:那你怎么实现我直接关闭浏览器1变成0?没答上来。
后来面试官说:这些都是PHP基础啊。
突然间觉得以前PHP这类都白学了。。下午面试了一小公司上来跟我讲服务器集群,说什么nginx搭建和维护我都不知道,没听说过,最后开价2500。
这个价格在天津这边也就是干保安,看大门的价格。回家后特别失落 ,30了,学搞站的还不如站大街的,以后PHP该怎么深入学,请各位指点迷津。不胜感激
...全文
1101 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
太久 2015-01-07
  • 打赏
  • 举报
回复
开出来的工资已经决定了公司的档次,不去也罢。 就算你没技术,工资也起码要是那个城市的中等水平工资,年纪经验那里摆着,饭也是要吃的。
小菜鸟czh 2015-01-07
  • 打赏
  • 举报
回复
找其他公司,2500 叫他吃屎去。问问他,他们实习生多少钱。。。这公司不去也罢
傲雪星枫 2015-01-07
  • 打赏
  • 举报
回复
樓主加油。
cmf41013 2014-12-29
  • 打赏
  • 举报
回复
我觉得还是侧重解决问题的能力吧,知识点百度下就知道了。 高手不百度就一定知道如何检查黄图? 高手就一定用过nginx吗? 我觉得楼主一个是技术确实一般,一个是气势略弱,感觉面试管都有为了压低待遇来问的, 从心理上分析啊,第一个问题是下马威,多数都不知道,杀杀威风,不过实力强大的人还是能知道借助第三方类库之类的,虽然不知道有什么库能用。 30岁还这水平,有点学艺不精, 不过完全没必要灰心和气馁,知耻而后勇嘛。
w112756478 2014-12-29
  • 打赏
  • 举报
回复
我也来当个事后诸葛亮吧! 第一题,用php来判断是否是黄色图片本身就是很愚蠢的方法,网上有类似的库,但准确率值得商榷,这是个很复杂的东西,怎么可以说是php的基础呢 第二题,like也是可以使用索引的,查找126,你直接 LIKE '126.com%'不就可以使用索引了吗,当然,全文索引也是个办法 第三题,php要实现这个确实是很困难,楼主前部分说得没错,一般要达到这个目的,其一是定时update相关字段,来确认其在线,超过一段时间后如果查询不到用户状态就表示他不在线。还有就是使用socket,这个最直接,但相当消耗服务器资源 总的来说,感觉这面试的是在刁难你吧,你自己肯定不止2500元的,都什么年代了,这种找苦力的公司不做也罢
蒲锦_up 2014-12-29
  • 打赏
  • 举报
回复
检查图片那个 太凶残了
错_对 2014-12-27
  • 打赏
  • 举报
回复
<会话级别的session在用户关闭浏览器时会被自动删除>这句话是不准确的。。。。这个问题我再仔细想想。。。。
错_对 2014-12-27
  • 打赏
  • 举报
回复
第三题我觉得是有办法解决的,不过是存在延迟和性能的损耗。。 1个用户表,里面有id,uid,status 1个状态表 (配置一个定时器,sleep(3600)秒后检查一下这个状态表,状态表3个字段,id,uid sess_id,)相当于每一个小时(时间间隔可以自由配置)去查询一下这个状态表,当sess_id对应的session文件不存在时(会话级别的session在用户关闭浏览器时会被自动删除),就根据对应的uid去用户表将status赋值为0,并根据id删除对应的这一条记录, 同时通过用户表和状态表相关联的方式,当多次登陆时,session_id是不同的,这时在状态表中,uid对应的sess_id会有多条记录
错_对 2014-12-27
  • 打赏
  • 举报
回复
关于第二题,我特地试验了一下。

create table email(id int unsigned primary key auto_increment, e_mail varchar(64)) engine=myisam;

insert into email(e_mail) values('caifangjie@163.com'),('caifangjie@163.com.cn'),
('caifangjie@163.cn'),
('1122@1126.com'),
( '1122@1126.com.cn'),
('1122@126.cn');

上面假设有五千万条,通过分表的技术,把126和163的记录分开,因为现实情况肯定是这样做,不可能每次都对五千万条记录进行一次索引查找。。

create table email_163 like email;

insert into email_163
select id, temp.e_mail_163
from
(
select id,
case e_mail
when substr(e_mail,-7,3)=163 then e_mail
when substr(e_mail,-10,3)=163 then e_mail
when substr(e_mail,-6, 3)=163 then e_mail
else 0
end as e_mail_163
from email order by length(e_mail_163) desc
)as temp
where temp.e_mail_163 <> '0';

因为126或者163,域名的部分都只存在三种固定的模式,,,163.com,163.cn,163.com.cn。。。。。显然域名这部分的长度是相同的,,所以通过字段比对,将163的提取到另外一个表。。。。提取126的同样如此。 这样就不用每次都对五千万条记录查询了,而且速度更快
lijpwsw 2014-12-27
  • 打赏
  • 举报
回复
1.这个问题一点都不基础,只能依靠图像识别,但是图像识别黄色图片难度很大,如何界定是黄色图片这是个问题 2.email可以用@分隔存储到两个字段中 3.用户关掉浏览器这个是没办法通知到后台的
错_对 2014-12-27
  • 打赏
  • 举报
回复
第一题哪里是基础题目??????。。。。。 这显然不是基础,图像识别其实可以很复杂,也可以很简单(用别人的库) 第二题直接用PHP倒腾一遍,也是可以的啊........每次获取1万条,速度也会很快的(当然这是下下策,但至少能反应你思路还是很灵活的) 第三题用session实现,同一个用户ID用多个浏览器登陆的话session_id是不一样的。。。。 至于检测用户时候关闭了浏览器也可以用会话级别的seesion,当用户关闭浏览器时,session文件会被从服务器删除,或者从memcache中删除。 当浏览器关闭的时候根据session_id去获取对应的session文件肯定是不存在的,这时可以判断用户肯定是关闭了浏览器,所以这时候需要建一个表保存session_id,服务器每隔一段时间去检索一边对应的session_id对应的session文件是否存在,如果不存在表示用户肯定是关闭了浏览器,当session_id对应的session不存在时,顺便删除这一行记录。。。。
luojxun 2014-12-27
  • 打赏
  • 举报
回复
第二题用like也是可以的呀,不知道为什么面试官冷笑,是效率低吗? 如果like + 所要查的行数限制比如用between,5000w数据查询不会很慢。
luojxun 2014-12-27
  • 打赏
  • 举报
回复
1、判断是否黄图原理很简单,就是计算皮肤颜色像素所占比例。不过这会造成误判,比如一张大头照 2、其实大多数DBMS也是可以用正则表达式的 3、楼主的思路是对的,其实就是判断用户是否在线,由于http协议是无连接、无状态的,因此无法实现准确判断用户是否在线 不准确判断的话方法有很多,比如 i、记录用户最后一次活动时间,超过多长时间不活动就判断不在线 ii、记录用户登录的session文件名,判断该文件是否被清除 iii、浏览器发心跳包 iv、浏览器关闭是是会触发Onunload与Onbeforeunload事件的 还要其他,以上方法是可以结合或分开使用
ghostwuboy 2014-12-26
  • 打赏
  • 举报
回复
引用 楼主 yinjiephp 的回复:
昨天面试心情特别不好,先说下我的经历吧 大学计算机专业,今年30岁。 大学里面学的MYSQL。后来毕业后进了一家公司开始前期我学的HTML+css.后来单位干PHP走的,老板让我干起来,好吧。这一年半的时间学习了很多东西php,COOKIE,SESSION+正则+smarty+ajax+js+jquery+Thinkphp后来又学习了dede 再后来干维护的也走了老板又让我干起来 学了MYSQL优化(建立索引啊,分表啊)别的没了 这一年半的时间干了4个项目 第一个纯MVC结构,没用框架 (我记得6个页面是个雇员管理系统) 第二个项目用了框架,在这之前干PHP的走了几个人 客户要求那个管理系统增加功能,可是他们写的很乱(没人敢碰)所以DOWN掉了老板说用框架把好维护(这又学习了THINKPHP) 那是个项目类似WEBQQ带离线功能用了SMARTY,AJAX,JQUERY 第三个项目是个CMS,原本要求用框架开发,可是客户要急,没办法只好用DEDE进行2次开发。 第4个项目也是个CMS,他就是给客户开发一个电影网站,那时候开发部算我在内就4个人了,没办法又用了DEDE。 后来维护的也走了我学习了点优化觉得没意思了。。也辞职了。 我现在特别迷茫,不知道自己该干什么?什么都懂一点,什么又都不深入。PHP再往下学该怎么学? 今天去面试,面试官问了我3个问题一个都回答不上来: 第一个:PHP如何检验上传的不是黄色图片:不知道 第二个:一张表5000万数据,就2个字段一个ID自增一个EMAIL,怎么查询163与126用户?我答不上来,因为我知道索引管前不管后。最后只能回答用LIKE 面试官冷笑下。 第三个:你怎么实现验证2个用户用同一个用户名密码登录:这个我答上来点:我说在表增加个字段,上线为1下线为0,面试官问我:那你怎么实现我直接关闭浏览器1变成0?没答上来。 后来面试官说:这些都是PHP基础啊。 突然间觉得以前PHP这类都白学了。。下午面试了一小公司上来跟我讲服务器集群,说什么nginx搭建和维护我都不知道,没听说过,最后开价2500。 这个价格在天津这边也就是干保安,看大门的价格。回家后特别失落 ,30了,学搞站的还不如站大街的,以后PHP该怎么深入学,请各位指点迷津。不胜感激
第一点算基础吗,你应该反问请教下那个面试的,看他怎么教你做出来,这都是拿高薪的岗位 后2点不难,一个索引加分段处理,一个就是简单的SESSION 因为你经常做那种CMS的标签调用,所以很少写到后面2个,因为别人做好了,其实这也没什么,不要被打击了, 楼主当时没有反应过来,但是实际做项目的时候应该能做出来
天涯过客009 2014-12-26
  • 打赏
  • 举报
回复
引用 4 楼 aazbc 的回复:
[quote=引用 2 楼 luo19880415 的回复:] 第一个:PHP竟然能检测上传的图片是否是黄色图片????? 决定去守门.
这个上面有一种方案:http://www.oschina.net/translate/prevent-uploads-of-adult-or-nude-pictures-using-php[/quote] 腾讯的黄色图片鉴定方法非常准确,我上传了几张,一张都上传不了
傲雪星枫 2014-12-26
  • 打赏
  • 举报
回复
1.可以参考:http://www.oschina.net/translate/prevent-uploads-of-adult-or-nude-pictures-using-php 2.你说用like,但因为@163.com,@126.com是在后面,所以是用不到索引的。 这里有两个方法。 第一,把email字段反转一次另存,并创建索引, 然后通过where email like 'moc.361%' 来处理,但这个需要多一组字段,存储和更新成本太高。 第二,自己做分词fulltext 3.登入后会写session,那么可以记录用户登入时的session_id,另一个用户再用相同的帐号密码登入。session_id必然不同(因为浏览器变了),只要判断用户uid是否存在两个session_id,就知道是否多人使用此帐号登入了。 例如 建立一个login_log的表,相同session_id的只做update addtime处理。 id, uid, session_id, addtime 然后在指定的某个时间段内(addtime),uid=xx 的记录有多条的话,就表示多人使用此帐号登入了。
野树林 2014-12-26
  • 打赏
  • 举报
回复
引用 2 楼 luo19880415 的回复:
第一个:PHP竟然能检测上传的图片是否是黄色图片????? 决定去守门.
这个上面有一种方案:http://www.oschina.net/translate/prevent-uploads-of-adult-or-nude-pictures-using-php
野树林 2014-12-26
  • 打赏
  • 举报
回复
第三个可以用cookie实现
天涯过客009 2014-12-26
  • 打赏
  • 举报
回复
第一个:PHP竟然能检测上传的图片是否是黄色图片????? 决定去守门.
「已注销」 2014-12-26
  • 打赏
  • 举报
回复
是不是你之前不是在正规的IT公司上班的?
加载更多回复(4)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧