面试

最近打算换工作,面试的时候遇到一些好的题目,来分享下

试题

  1. linux下执行“ls -l”看到的某文件属性为“drwxr-xr-x”,下面的字母对应的

(1)2)(3)(4)(5)什么意思,填在字母对应的横线上。(6分)

d

r

w

x

r

-

x

r

-

x

1

2

3

 

 

4

 

 

 

5

 

(1)文件类型:目录文件(2)所有者可读(3) 所有者可写(4)所有者所在组其他用户无写权限

5)其他组用户有可执行权限

 

  1. 文件test.log中每行的格式为:“姓名,职级,绩效考核等级”(等级为S A B C D)。使用awk(其他语言也可)快速统计每个等级的员工人数。(6分)

 

#!/bin/bash

awk 'BEGIN{Na=0;Nb=0;Nc=0;Nd=0;Ns=0;} {if($3=="A") Na++; if($3=="B") Nb++; if($3=="C") Nc++;  if($3=="D") Nd++;   if($3=="S") Ns++; }  END{print "A:"""Na; print "B:"""Nb; print "C:"""Nc;

print "D:"""Nd;  print "S:"""Ns;}'  test.log

 

  1. 使用shell命令完成如下任务:从当前目录(及其所有子目录)下的所有扩展名为“.log”的文件中,过滤出所有包含“error”字符串的行,并对结果进行自然排序,然后输出到当前登录用户主目录下的error.log文件中。(15分)

 

 

 

 

 

 

 

  1. 以下函数的功能及返回类型。(10分)

函数名

功能

返回类型

array_map

将回调函数作用到给定数组的单元上

数组

krsort

对关联数组按照键名进行降序排序。

布尔类型

array_merge

用于把一个或多个数组合并为一个数组

合并的数组

array_filter

用回调函数过滤数组中的元素

过滤的数组

filter_var

通过指定的过滤器过滤一个变量

成功的话,返回被过滤的数组,失败则返回false

shuffle

把数组中的元素按随机顺序重新排列

布尔类型

 

  1. 请实现一个完整的函数,传入两个参数字符串$a$b,删除$a中出现了的$b的所有字符,如 $a =‘欢迎您来到鲁大师面试。’,$b=‘祝您面试顺利。’,则返回值为‘欢迎来到鲁大师’。(20分)

 

答:function del_sub_str($a,$b){

     $a_strlen=iconv_strlen($a,”UTF-8”);

     $b_strlen=iconv_strlen($b,”UTF-8”);

     $a_array=array();

     $b_array=array();

     for($i=0;$i<$a_strlen;$i++){

        $a_array[]=iconv_substr($a,$i,1,”UTF-8”);   

}

      for($i=0;$i<$b_strlen;$i++){

        $b_array[]=iconv_substr($b,$i,1,”UTF-8”);

}

$diff=array_diff($a_array,$b_array);

//将数组转化成字符串

echo implode(‘’,$diff);

}

 

  1. 列举几个php7的新特性?(5分)

答:PHP常量数组、PHP匿名类、use语句

 

  1. Mysql常用数据类型和sql优化(15分)

   常用数据类型:char  varchar  int  tinyint  smallint  float  double

datetime  timestamp

 

a)varchar char的区别 (2分)

答:char是一种固定长度的类型,varchar则是一种可变长度的类型

 

b)datetime timestamp的区别(2分)

 

答:

1) datetime 1000-01-01 00:00:00” 到“9999-12-31 23:59:598字节

timestamp 19700101000000 2037 年的某个时刻 4字节

datetime的日期范围是1001-9999timestamp的时间范围是1970-2038年。

2) Datetime存储时间与时区无关,timestamp存储时间与时区有关,显示的值也依赖于时区。在mysql服务器,操作系统以及客户端连接都有时区的设置。

 

c)“int(10)”中的数字10是什么含义?(2分)

 

答:最大指示宽度是10

 

d)使用explain查看sql分析时,你对结果最关注的列及这些列常用值的含义。

9分)

答:type本次查询表连接类型,从这里可以看到本次查询大概的效率

    

key最终选择的索引,如果没有索引的话,本次查询效率通常很差

 

key_len 本次查询用于结果过滤的索引实际长度

 

rows预计需要扫描的记录数,预计需要扫描的记录数越小越好

 

Extra额外附加信息,主要确认是否出现Using filesortUsing temporary这两种情况

 

  1. 列举常见的安全问题类型(如sql注入等等),越多越好。并举实际场景说明以及如何处理。(如果某场景文字过多,只写出安全问题的类型,场景和处理方法稍后口述即可)(10分)

 

答: 跨网站请求伪造攻击(CSRF

     Session会话劫持   URL攻击

 

  1. 以下有三个问题:

a)http请求结果为500是什么意思?通过什么方法查看500的原因?(4分)

答:500是服务器内部错误。遇上错误首先想到的肯定是先看服务器的进程还在不在,然后查看日志,从日志里面找原因

1.数据库异常

2.域名异常

3./etc/hosts没有配置解析

4.logoutURL配置问题,网站的退出登录时,页面直接报500 5.memcached异常,页面登录,报500

 

b)用户访问www.ludashi.com首页,当使用不同客户端(如手机和PC)访问该URL时,呈现的页面结果却不相同,如何实现?(3分)

答:通过$_SERVER[‘HTTP_USER_AGENT’]判断浏览器类型,然后include不同的模板代码。

 

c)如何防止站内图片被盗链?(3分)

 

答:http标准协议中有专门的字段记录referer

1)它可以追溯到请求时从哪个哪个网站链接过来的

2)对于资源文件,可以追踪到包含显示他的网页地址是什么

 

因此所有防盗链方法都是基于这个Referer字段,用得比较多的方法有以下两种:

第一种:是使用apache文件FileMatch限制,在httpd.conf中增加以下语句或者将其存成一个.htaccess文件,并放到网站的根目录(www/html目录)

SetEnvIfNoCase  Referer  “^http://yahoo.com/”  local_ref=1

 

Order Allow,Deny

Allow from env=local_ref

Allow from 127.0.0.1

这种很方便禁止非允许访问URL引用各种资源文件

第二种:使用rewrite,需要增加apachemode_rewrite,支持.htaccess文件目录权限限制,在虚拟主机根目录增加.htaccess文件,描述重定向,把非本地地址refer的图片文件都从定向到警告图片或者警告网页上。

 

   

  1. 多域名情况下,如何实现用户在某域名下登陆后,其他域名也同时登陆,退出后其他域名也同时退出。

答:多域名同步登录,单点登录SSO

 

posted @ 2018-08-22 09:12  欢乐豆123  阅读(197)  评论(0编辑  收藏  举报