18、一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停 的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号(约瑟夫环)。

1

2 function fuhuan($allnum, $ti){

3 $arr = array();

4 for($i = 0; $i < $allnum; $i++){

5 $arr[$i] = $i;

6 }

7

8 $nums = 1;

9 while(count($arr) > 1){

10 foreach ($arr as $key => $value) {

11 if($nums == $ti){

12 unset($arr[$key]);

13 $nums = 1;

14 }else{

15 $nums++;

16 }

17 }

18 }

19 $new_arr = array_values($arr);

20 var_dump($new_arr[0] + 1);

21 }

22 fuhuan(10,10);

19、isset() 、empty()与is_null的区别

1、当变量未定义时,is_null() 和“参数本身”是不允许作为参数判断的,会报Notice警告错误;

2、empty , isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!

3、isset():仅当null和未定义,返回false;

4、empty():""、0、"0"、NULL、FALSE、array(),未定义,均返回true;

5、is_null():仅判断是否为null,未定义报警告;

6、变量本身作为参数,与empty()一致,但接受未定义变量时,报警告;

20、求两个文件的相对路径(这题没什么实际意义)

1 getpath('/a/b/c/d/e.php', '/a/d/12/34/c.php');

2

3 public function getpath($a, $b)

4 {

5 $aarr = explode('/', $a);

6 $barr = explode('/', $b);

7 $count = count($barr) - 2;

8 $pathinfo = '';

9 for($i = 1; $i <= $count; $i++){

10 if($aarr[$i] == $barr[$i]){

11 $pathinfo .= '../';

12 }else{

13 $pathinfo .= $barr[$i] . '/';

14 }

15 }

16 echo $pathinfo;

17 }

21、MVC的优缺点

1、 MVC的优点

(1)

可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。(2)视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。(3)模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。(4)潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。2、 MVC的不足之处

(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。(4) 目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

22、session与cookie的联系和区别(运行机制),session共享问题解决方案

区别与联系:

使用session_start()调用session,服务器端在生成session文件的同时生成session ID哈希值和默认值为PHPSESSID的session name,并向客户端发送变量为PHPSESSID(session name)(默认)值为一个128位的哈希值。服务器端将通过该cookie与客户端进行交互,session变量的值经php内部系列化后保存在服务器 机器上的文本文件中,和客户端的变量名默认情况下为PHPSESSID的coolie进行对应交互,即服务器自动发送了http 头:header(‘Set-Cookie: session_name()=session_id(); path=/’);即setcookie(session_name(),session_id());当从该页跳转到的新页面并调用 session_start()后,PHP将检查与给定ID相关联的服务器端存贮的session数据,如果没找到则新建一个数据集。

共享

方案:

1:使用数据库保存session, 使用数据库来保存session,就算服务器宕机了也没事,session照样在。

问题:程序需要定制;每次请求都进行数据库读写开销不小,另外数据库是一个单点,可以做数据库的hash来解 决这个问题。

2:使用 memcached来保存session, 这种方式跟数据库类似,内存存取性能比数据库好很多。

问题:程序需要定制,增加 了工作量;存入memcached中的数据都需要序列化,效率较低,断电或者重启电脑容易丢失数据;

3: 通过加密的cookie,在A服务器上登录,在用户的浏览器上添加加密的cookie,当用户访问B服务器时,检查有无Session,如果没有,就检验 Cookie是否有效,Cookie有效的话就在B服务器上重建session。简单,高效, 服务器的压力减小了,因为session数据不存在服务器磁盘上。根本就不会出现session读取不到的问题。

问题:网络请求占用很多。每次请求时,客户端都要通过cookie发送session数据给服务器,session中数据不能太多,浏览器对cookie 的大

小存在限制。不适合高访问量的情况,因为高访问量的情况下。

23、 正则表达式

正则表达式一定要会, 通过正则表达式能很容易的看出一个人的基础

匹配中文字符的正则表达式: [\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s| ]*\r匹配HTML标记的正则表达式:/.*|/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

24、写一个函数得到header头信息

function getHeader()

{

$headers = [];

if (function_exists('getallheaders')) {

$headers = getallheaders();

} elseif (function_exists('http_get_request_headers')) {

$headers = http_get_request_headers();

} else {

foreach ($_SERVER as $key => $value) {

if(strstr($key, 'HTTP_')) {

$newk = ucwords(strtolower(str_replace('_', '-', substr($key, 5))));

$headers[$newk] = $value;

}

}

}

var_dump($headers);

}

------------------------MySQL部分-----------------------

1、select * from table where (ID = 10)  or (ID = 32) or (ID = 22)  让结果按10, 32, 22的顺序检索出来?

Select *

from user_info

Where (ID IN (10, 32, 22))

order BY FIND_IN_SET(ID, '10, 32, 22')

----------------------linux部分-----------------------

1、core文件是什么,有什么用?

core是unix系统的内核。当你的程序出现内存越界的时候,操作系统会中止你的进程,并将当前内存状态倒出到core文件中,以便进一步分析。程序员可以通过core文件来找出问题所在。它记录了程序挂掉时详细的状态描述。

什么是core dump Core的意思是内存, Dump的意思是扔出来, 堆出来。开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的,它可以做为调试程序的参考.

core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump。如何使用core文件 gdb -c core文件路径 [应用程序的路径],进去后输入where回车, 就可以显示程序在哪一行当掉的, 在哪个函数中.

为什么没有core文件生成呢? core文件的生成跟你当前系统的环境设置有关系, 可以用下面的语句设置一下, 然后再运行程序便成生成core文件.

ulimit -c unlimited core文件生成的位置一般于运行程序的路径相同, 文件名一般为core.进程号

不用core文件,程序出了问题产生信号是否知道?答:内核向进程发信号嘛。

2、共享内存除了文件映射还有什么方式?

共享内存对象映射。

二者有什么区别:

区别:内存映射文件是由一个文件到一块内存的映射,使应用程序可以通过内存指针对磁盘上的文件进行访问,其过程就如同对加载了文件的内存的访问,因此内存文件映射非常适合于用来管理大文件。

3、请解释下列10个shell命令的用途

top、ps、mv、find、df、cat、chmod、chgrp、grep、wc

top:命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

ps:查看进程

mv:移动或者更改文件

find:在子目录中搜索匹配的文件

df:linux中df命令参数功能:检查文件系统的磁盘空间占用情况。

cat:把一个或多个文件内容显示到标准输出

chmod:改变文件属性

chgrp:改变用户分组

grep:在文件内进行搜索

wc:命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。

4、Linux文件属性有哪些?(共十位)

-rw-r--r--那个是权限符号,总共是- --- --- ---这几个位。

第一个短横处是文件类型识别符:-表示普通文件;c表示字符设备(character);b表示块设备(block);d表示目录 (directory);l表示链接文件(link);后面第一个三个连续的短横是用户权限位(User),第二个三个连续短横是组权限位 (Group),第三个三个连续短横是其他权限位(Other)。每个权限位有三个权限,r(读权限),w(写权限),x(执行权限)。如果每个权限位都 有权限存在,那么满权限的情况就是:-rwxrwxrwx;权限为空的情况就是- --- --- ---。

权限的设定可以用chmod命令,其格式位:chmod ugoa+/-/=rwx filename/directory。例如:

一个文件aaa具有完全空的权限- --- --- ---。

chmod u+rw aaa(给用户权限位设置读写权限,其权限表示为:- rw- --- ---)

chmod g+r aaa(给组设置权限为可读,其权限表示为:- --- r-- ---)

chmod ugo+rw aaa(给用户,组,其它用户或组设置权限为读写,权限表示为:- rw- rw- rw-)

如果aaa具有满权限- rwx rwx rwx。

chmod u-x aaa(去掉用户可执行权限,权限表示为:- rw- rwx rwx)

如果要给aaa赋予制定权限- rwx r-x r-x,命令为:

chmod u=rwx,go=rx aaa

mysql跨年统计年前年后_PHP面试总结 - osc_chmxgjn9的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. mysql 列转行union all_MySQL中的列转行 - osc_qheq8wav的个人空间 - OSCHINA - 中文开源技术交流社区...

    mysql中的列转行 在工作中遇到的一个MySQL列转行的统计: 场景 用户访问app时会跳出标签选择页面让用户选择喜欢的标签,在数据库中记录的是数组样式的字符串,数据样式大致如下: id user_ ...

  2. 小米 mysql sql审核_mysql和sql - 小米米儿小的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.MySQL的安装 使用命令终端打开服务启动项:services.msc 安装MySQL后,应注意以下配置: 1.选择第一项Reconfigure Instance进行重新配置. 2.选择第一项详细 ...

  3. mysql for loop_MySQL循环语句 - Linux就该这么学的个人空间 - OSCHINA - 中文开源技术交流社区...

    mysql常见的三种循环方式:while.repeat和loop循环.还有一种goto,不推荐使用. 1.while循环 -- 设置mysql分隔符为//,也就意味着,当遇到下一个//时,整体执行SQ ...

  4. zabbix中mysql连不上的排错_zabbix使用排错 - oschina130111的个人空间 - OSCHINA - 中文开源技术交流社区...

    在linux系统中,几乎所有运行的服务都会产生相对就的日志(log),所运行的程序在出错时都会有错误提示,即使没有任何提示也可以通过"echo $"来查看运行是否成功.使用zabb ...

  5. 利用mysql建立随机森林_随机森林算法实例 - osc_4imme0wh的个人空间 - OSCHINA - 中文开源技术交流社区...

    根据成年人数据集来预测一个人的收入 1.准备数据集 我下载好了一个成年人数据集,从百度云下载 链接:https://pan.baidu.com/s/10gC8U0tyh1ERxLhtY8i0bQ 提取 ...

  6. mysql查询95031班人数_MySQL的查询练习 - osc_1ngzqx2h的个人空间 - OSCHINA - 中文开源技术交流社区...

    student表 teacher表 course表 score表 对这四个表进行一些练习. 1:查询student表中所有记录. select *from student; 2:查询student表中 ...

  7. mysql实训5答案_MySQL 实训篇 - osc_mi06gsf5的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.创建student.achievement表 1. create table student(id int unsigned auto_increment primary key,name var ...

  8. mysql的第一次作业_数据库入门第一次作业 - osc_2frf70qv的个人空间 - OSCHINA - 中文开源技术交流社区...

    数据库入门第一次作业 1.在某大学的<>中,用如下表来存储学生信息.其中,用户信息.星座信息和血型信息分别采用Users.Star和Blood三个表来保存,其中Users表引用了Star和 ...

  9. mysql mtq_MySQL基础知识 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区

    01)查看当前存在的全部数据库 show databases; 02)创建数据库 create database 数据库名称; 03)查看创建好的数据库信息 show create database ...

最新文章

  1. java培训教程分享:Java中用户如何自定义异常?
  2. Odoo10 启动选项
  3. php+换行+php+eol,PHP PHP_EOL 换行符
  4. 最小的linux服务器_学习以最小的努力构建GraphQL服务器
  5. 巴塞尔大学合作项目博士招生,医学图像分析领域
  6. 2022翼支付产业合作解决方案发布 权益累计发展用户超1.36亿
  7. 支付宝老年大学招95后青年讲师:不要大厂经验高学历,只要会跳广场舞会钓鱼?...
  8. SQL_alter_table已有表操作
  9. 支付宝核心工程师谈如何成为一名优秀的程序员?
  10. 阿里巴巴:如何从优秀员工,晋升为合格管理者?
  11. 高德地图android离线包下载,高德地图(车机版)离线包下载与安装
  12. 《英雄联盟》“被手游”背后,是移动电竞的成长期烦恼
  13. 裸奔系列之博科SAN交换机(3)---SAN交换机初始化
  14. Java导出超大Excel文件,防止内存溢出
  15. RAC环境scan ip详解
  16. OpenDrive格式地图数据解析
  17. js splice,slice,split区别
  18. 下一代存储技术面临市场窗口期?
  19. Python上手就有
  20. FreeCAD sketcher草图模式下旋转部分绘制的图形

热门文章

  1. js距离单位换算_JS:重量单位换算
  2. 机器学习实战-FP-growth算法
  3. 下载WIN7版本的iTunes
  4. 自考计算机原理知识点,(完整版)18版自考04741《计算机网络原理》知识点——第一章...
  5. Topaz Video Enhance AI Mac版,视频无损放大工具
  6. 商品收藏模块的功能设计实现
  7. WMS-商超分拣管理
  8. 【QT】qt实现多人屏幕共享系统
  9. 1373:鱼塘钓鱼(fishing)——优先队列+贪心
  10. thinkphp5多级控制器及其使用