360 php 面试总结

一面没位置就没做面试题随便找个了地方面试,一面问了几个基础的东西。回答的不是很好  基础的好多东西都忘了。现在大概整理下

一个面试题:字符串翻转  写一个函数 可以把“360安全卫士” 转成“士卫全安063”

考察字符串编码问题。  思路:获取字符串长度 -> for循环截取 ->存入临时数据 -> 数组反向排序 ->数组转字符串

echo strlen("360安全卫士")  ;  //15  不指定编码的话一个汉字展3个字节

echo  mb_srelen("360安全卫士",‘UTF-8‘);  //7  UTF-8 一个中文字符当作长度1

function str_rev_gb($str){
  //判断输入的是不是utf8类型的字符,否则退出
  if(!is_string($str)||!mb_check_encoding($str,‘UTF-8‘)){
    exit("输入类型不是UTF8类型的字符串");
  }
  $array=array();
  //将字符串存入数组
  $l=mb_strlen($str,‘UTF-8‘);//在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算
  for($i=0;$i<$l;$i++){
    $array[]=mb_substr($str,$i,1,‘UTF-8‘);
  }
  //反转字符串
  krsort($array);
  //拼接字符串
  $string=implode($array);
  return $string;
}

有一个数组[1,1,3,3,4]  顺序数量不定,找出不重复的那个值

php函数 array_count_value()

array_count_values() 函数用于统计数组中所有值出现的次数。

本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

数据库索引的问题

表中USER上建立了索引问一下sql那些能用到索引
select * from table where USER = ‘1‘
select * from table where USER = ‘1‘ or USER =‘2‘
select * from table where USER = ‘1‘ or USER =‘2‘
select * from table where USER LIKE ‘%username‘ 
select * from table where USER LIKE ‘%username%‘
select * from table where USER LIKE ‘username%‘
select * from table where USER LIKE ‘usern%ame%‘

总结:

1. 为什么使用索引
在无索引的情况下,MySQL会扫描整张表来查找符合sql条件的记录,其时间开销与表中数据量呈正相关。对关系型数据表中的某些字段建索引可以极大提高查询速度(当然,不同字段是否selective会导致这些字段建立的索引对查询速度的提升幅度不同,而且索引也并非越多越好,因为写入或删除时需要更新索引信息)。
对于MySQL的Innodb储存引擎来说,大部分类型的index均以B-Tree数据结构的变种B+Tree来存储(MEMORY类型的表还支持hash类型的索引)。B-Tree是数据库或文件系统中常用的一种数据结构,它是一种N叉平衡树,这种树结构保证了同层节点保存的key有序,对于某个节点来说,其左子树保存的所有key均小于该节点保存的 key,其右子树保存的所有key均大于该节点保存的key。此外,在工程实现上,还结合操作系统的局部性原理做了很多优化,总之,b-tree的各种特性或优化技巧能保证:1) 查询磁盘记录时,读盘次数最少;2) 任何insert和delete操作对树结构的影响均很小;3) 树本身的rebalance操作很高效。
2. MySQL使用索引的场景

MySQL在以下操作场景下会使用索引:
1) 快速查找符合where条件的记录
2) 快速确定候选集。若where条件使用了多个索引字段,则MySQL会优先使用能使候选记录集规模最小的那个索引,以便尽快淘汰不符合条件的记录。
3) 如果表中存在几个字段构成的联合索引,则查找记录时,这个联合索引的最左前缀匹配字段也会被自动作为索引来加速查找。
例如,若为某表创建了3个字段(c1, c2, c3)构成的联合索引,则(c1), (c1, c2), (c1, c2, c3)均会作为索引,(c2, c3)就不会被作为索引,而(c1, c3)其实只利用到c1索引。
4) 多表做join操作时会使用索引(如果参与join的字段在这些表中均建立了索引的话)
5) 若某字段已建立索引,求该字段的min()或max()时,MySQL会使用索引
6) 对建立了索引的字段做sort或group操作时,MySQL会使用索引
3. 哪些SQL语句会真正利用索引
从MySQL官网文档"Comparison of B-Tree and Hash Indexes"可知,下面这些类型的SQL可能会真正用到索引:
1) B-Tree可被用于sql中对列做比较的表达式,如=, >, >=, <, <=及between操作
2) 若like语句的条件是不以通配符开头的常量串,MySQL也会使用索引
比如,SELECT * FROM tbl_name WHERE key_col LIKE ‘Patrick%‘或SELECT * FROM tbl_name WHERE key_col LIKE ‘Pat%_ck%‘可以利用索引,而SELECT * FROM tbl_name WHERE key_col LIKE ‘%Patrick%‘(以通配符开头)和SELECT * FROM tbl_name WHERE key_col LIKE other_col(like条件不是常量串)无法利用索引。
对于形如LIKE ‘%string%‘的sql语句,若通配符后面的string长度大于3,则MySQL会利用Turbo Boyer-Moore algorithm算法进行查找。
3) 若已对名为col_name的列建了索引,则形如"col_name is null"的SQL会用到索引
4) 对于联合索引,sql条件中的最左前缀匹配字段会用到索引,示例请参考本文第2节第3条对联合索引的说明
5) 若sql语句中的where条件不只1个条件,则MySQL会进行Index Merge优化来缩小候选集范围

有一个是类里属性权限控制的问题

public 表示全局,类内部外部子类都可以访问;
private表示私有的,只有本类内部可以使用;
protected表示受保护的,只有本类或子类或父类中可以访问;

   <?
    //父类
    class father{
     public function a(){
      echo "function a";
     }
     private function b(){
      echo "function b";
     }
     protected function c(){
      echo "function c";
     }
    }
    //子类
    class child extends father{
      function d(){
        parent::a();//调用父类的a方法
      }
      function e(){
       parent::c(); //调用父类的c方法
      }
     function f(){
        parent::b(); //调用父类的b方法
      }
    }
    $father=new father();
    $father->a();
    $father->b(); //显示错误 外部无法调用私有的方法 Call to protected method father::b()
    $father->c(); //显示错误 外部无法调用受保护的方法Call to private method father::c()
    $chlid=new child();
    $chlid->d();
    $chlid->e();
    $chlid->f();//显示错误 无法调用父类private的方法 Call to private method father::b()
    ?>

 

时间: 2024-11-11 17:50:09

360 php 面试总结的相关文章

360面经

360视频面试 提前调试好摄像头和麦克风,麦克风噪音比较大,和同学视频下,检查下你的视频,通话质量, 面试官会提前和你确认你下午进行面试 1.一面 开始面试,一下状态和平常不一样 就是无忌孩儿,你还记住多少了.师公,全都忘了... 1.自我介绍 巴拉巴拉,大吹特吹,说自己的亮点,什么参加志愿者,比赛,考证,想着法子找自己的亮点(以前这些都不屑一顾,不爱参加的,没想到现在都是亮点了,,,真香警告) 以后的自我介绍,还是提前写在纸上吧!梳理下 2.你怎么发现我们部门这个岗位的 我说没找到python

初入职场的思考

最近找到了工作了,但是同时收到了两个offer,有些冲突,首先来聊一聊着两个offer. 第一个,初创的小公司,人才不足,技术不成熟,但是老板人挺好,团队也挺舒服. 第二个,神码,签订第三方协议,属于人力外包,但是有老司机带着,有统一的培训,对于技术不成熟的我是恨有诱惑力的,项目很大,很有前途. 现在分别列出我的考虑吧. 问题 1 2 薪水 7500 7000 工作时间 9:30-8:30 不清楚,有可能有夜班 工作地点 苏州街,15站路 上地九街,7站 工作内容 java后台,后期可能转大数据

再见北理工:忆北京研究生的编程时光

两年前,我本科毕业写了这样一篇文章:< 回忆自己的大学四年得与失 >,感慨了自己在北理软院四年的所得所失:两年后,我离开了帝都,回到了贵州家乡,准备开启一段新的教师生涯,在此也写一篇文章纪念下吧! 还是那句话:这篇文章是写给自己的,希望很多年之后,回想起自己北京的六年时光,也是美好的回忆.文章可能有点长,但希望大家像读小说一样耐心品读,看完之后也能温馨一笑或唏嘘摇头,闭上眼睛想想你自己的大学生活吧,很享受的! 同时,这也是自己的第200篇原创文章,三年半的时间,说长不长,说短不短,这期间不论是

记录2015年年初跳槽的经历!

引言 LZ在某大型P2P公司已经做了两年半之久,考虑到未来的职业和行业发展,LZ深思熟虑之后,决定开启人生的第二次跳槽. 第一次跳槽LZ的想法比较单纯,就是希望能够找一家比较大的公司,能够有很好的升职空间.结果LZ如愿以偿,找到了一家P2P行业的巨头公司,并且也如愿在一年半的时间内升职为SM兼PM.自我感觉,这一次跳槽还算是比较成功,没有给LZ留下什么遗憾. 这一次跳槽LZ的想法其实依然比较单纯,就是希望将自己的金融行业背景,更换为互联网金融行业,加上互联网的标签.于是LZ与各大互联网公司的大战

面筋: 奇虎360 c++ 后台开发 实习生 面试

投的是360上海的商业化部门,岗位是C++服务端开发实习生,记录一下面试历程: 视频面试,但是是有代码框让你写代码的. 一面: Q:先说一下个人信息,做过的项目 A:.......... Q:先写个翻转字符串 A:........(这个简单,不过要注意一下细节) Q:了解nginx吗 A:听说过,没有用过暂时(然后面试管就不问NIGIX了) Q:说一下线程池 A:........(网上很多就不写了,主要也记不清到底当时说的是什么了) Q:说说你的这个项目吧 A:.......(其实很水,不过我比

360面试总结(Android)

360面试心得(Android) 这次360面试,总共面试了两轮,都是视频面试. 时间:2016-08-23 转载请注明原博客地址: 闲谈: 从大二暑假的时候开始,一直想进腾讯或者阿里,在招实习生的时候,最终遗憾落选.暑假的时候为了好好准备校招,我放弃了去步步高实习的机会,继续在原来的一家公司实习.在暑假的时候找师兄师姐内推了腾讯,阿里,最终都没有通过简历筛选,没有面试.说实话,刚开始内心是挺失落的,挺难受的,但经过一两天的调整,我也意识到自己的错误,以前那种强烈想进bat的欲望渐渐淡了下来,当

360大牛:全面解读PHP面试

需要的联系我:QQ1844912514 360大牛带你横扫PHP职场 全面解读PHP面试 全面剖析PHP面试考点及考官考察思路,帮助准备参加面试的学员系统复习面试考点,总结面试重难点,理解解题技巧和方法,以不变应万变解决所有考点内容,让考生从容不迫的面试成功 原文地址:https://www.cnblogs.com/lxwphp/p/9887306.html

互联网公司的面试官是如何360&#176;无死角考察候选人的?[z]

[z]https://juejin.im/post/5c0e47ebf265da614e2be9a7 一.写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑. 这些同学说自己其实也做了精心准备,网上搜集了不少Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的东西,对不上号,这就很尴尬了... 因此,从这篇文章开始,笔者准备写一个长期连载的系列:<Java进阶面试系列>.主要跟大家聊聊中大型互联网公司Java面试中的一些热门.高

360大牛带你横扫PHP职场 全面解读PHP面试

第1章 课程介绍让大家了解基本面试流程和面试的核心要求以及意义是什么并理解PHP面试考点主要以基础为核心,说明PHP面试考察范围. 第2章 PHP基础知识考察点本章主要讲解技术面试时笔试考察中所遇到的PHP基础知识各个方面的考察点,帮助大家梳理PHP基础知识及易出错及难点,掌握引用变量.常量及数据类型.运算符.流程控制.自定义函数及内部函数.正则表达式.文件及目录处理.会话控制.面向对象.网络协议以及开发环境CGI.FastCGI及配置考察点内容,基本可以摸清面试官所考察... 第3章 Java