个人总结php笔试题四
来源:互联网 发布:杭州市行知小学 编辑:程序博客网 时间:2024/06/02 04:01
14.分别写出解压file.tar和压缩test目录的命令(Linux)
1、压缩当前目录下文件夹/文件test到test.tar.gz:
tar -zcvf test.tar.gz test
2、解压缩当前目录下的file.tar.gz到file:
tar -zxvf file.tar.gz
3、查看
在不解压的情况下查看压缩包的内容:tar -tf test.tar.gz
15.有一个备份程序mybackup.crontab配置mybackup在周一至周五下午1点和晚上8点各运行一次(Linux)
0 13,20** 1,2,3,4,5 mybackup16.计算今天是今年的第多少天(拓展计算某一天是今年的第几天)
1.
date("z")//(从 0 到 365)2.
$d = getdate(); dump($d["yday"]);//(从 0 到 365)3.
public function get_days($date) { $date_start = strtotime(date('Ymd', strtotime($date))); $year_start = strtotime(date('Y0101', strtotime($date))); return ($date_start - $year_start) / 86400 +1;//1月1日是第0天, 所以要+1 } dump($this->get_days('2017-08-08')); dump($this->get_days('2017-08-08 10:00:00')); dump($this->get_days('20170808'));
17.我们的程序运行过程中每分钟会采集一个整数的数据指标。
持续采集n分钟就得到一个有n个元素的整数数组a[n]。现在我们需要一个简单的算法,检测采集到的数据指标中,是否有异常。
异常的检测标准是:如果在连续m分钟内的指标的平均值大于w,则说明有异常。
输入:数组a[n], 正整数m, 整数w
返回:有异常返回 1,没有异常返回 0
例如:对于a={1, 5, 1, 3, 2}, m=2, w=2, 返回:1
附加说明:不同的实现方式执行效率不一样,如果能找到一个很高效的算法就更好了。
/* 1.用一个循环队列保存最近n次的采样,效率是最高的。 */ /** * 检测函数 * @param $a array 待测数组 * @param $start int 检测时间起点 * @param $m int 检测时间范围 * @param $w int 平均指标标准 * @return int 状态 */ public function check($a, $start, $m, $w) { $n = count($a); $m > $n && $m = $n; $arr = array_slice($a, $start - 1, $m); $s = array_sum($arr); if ($s / $m > $w) { return 1; } else { return 0; } } /** * 测试1 */ public function checkTime() { for ($i = 0; $i < 1000; $i++) { $a[] = rand(1, 4); } $aLenth = count($a); $m = 5; $w = 3; echo '检测时间范围:' . $m . '分钟,检测指标:' . $w . '<br><hr>'; for ($i = 1; $i <= $aLenth; $i++) { $arr = array_slice($a, $i - 1, $m); $n = count($arr); $avg = array_sum($arr) / $n; echo '时间:' . $i . '~' . ($i + $m - 1) . ',数据:{' . implode(',', $arr) . '},平均值:' . $avg; $return = $this->check($a, $i, $m, $w); if ($return == 1) { echo '<font color="red">【异常】</font>'; } echo '<br>'; } }
18.我们的程序运行过程中用到了一个数组a,数组元素是一个Map/Dictionary。
数组元素的“键”和“值”都是字符串类型。在不同的语言中,对应的类型是:PHP的array, Java的HashMap, C++的std::map, Objective-C的NSDictionary, Swift的Dictionary, Python的dict, JavaScript的object, 等等
示例:
a[0]["key1"]="value1"
a[0]["key2"]="value2"
a[1]["keyA"]="valueA"
...
为了方便保存和加载,我们使用了一个基于文本的存储结构,数组元素每行一个:
text="key1=value1;key2=value2\nkeyA=valueA\n..."
要求:请实现一个“保存”函数、一个“加载”函数。
text=store(a);
a=load(text);
这两个函数分别用于把数组保存到一个文本字符串中、把文本字符串中的内容读取为数组。
必须自己手写代码实现保存/加载逻辑,严格按照上述的“每行一个、key=value”的格式保存。
附加说明:基于上述格式,如果value中有特殊字符,比如有换行符/分号等怎么办?
如果有思路,请基于上述的格式设计并实现一个完美的方案。
/* 2.数组转成字符串,去除换行和空格,再去保存 */ /** * 存储数组为文本. * @param $a array 待存储数组 * @return $str string 存储文本 */ public function store($a) { $str = ''; foreach ($a as &$v) { foreach ($v as $k => &$z) { $str .= urlencode($k) . '=' . urlencode($z) . ';'; } $str = substr($str, 0, strlen($str) - 1) . '\n'; } $str = substr($str, 0, strlen($str) - 2); return $str; } /** * 加载文本为数组. * @param $text string 待转换文本 * @return $tempArr array 数组 */ public function load($text) { $mainArr = explode('\n', $text); $tempArr = array(); foreach ($mainArr as &$v) { $arr = explode(';', $v); $arr3 = array(); foreach ($arr as &$z) { $arr2 = explode('=', $z); if (!empty($arr2) && count($arr2) == 2) { $arr3[urldecode($arr2[0])] = urldecode($arr2[1]); } } if (!empty($arr3)) { $tempArr[] = $arr3; } } return $tempArr; } /** * 测试2 */ public function checkArray() { $a = array( 0 => array('key1' => 'value1', 'key2' => 'value2'), 1 => array('keyA' => 'valueA'), 2 => array('\n' => 'value;', ';' => 'value\n') ); echo '<pre>'; echo '<br />【原始数据】<br />'; print_r($a); $str = $this->store($a); echo '<br />【存储文本】<br />'; print_r($str); $str = $this->load($str); echo '<br />【加载文本】<br />'; print_r($str); }
阅读全文
1 0
- 个人总结php笔试题四
- 个人总结php笔试题一
- 个人总结php笔试题二
- 个人总结php笔试题三
- 个人总结php笔试题五
- IT公司笔试题总结(四)
- php笔试面试总结
- php笔试面试总结
- php笔试面试总结
- PHP-ExcelReader个人总结
- 笔试选择题总结3(个人总结)
- C++ prime/笔试 总结四
- 前端基础个人总结四
- HTTP个人总结(四)
- Java学习总结第三十五天Java笔试题(四)
- PHP文件操作个人总结
- 华为笔试题四
- 笔试题四+答案
- 数组Array、对象Object、json格式常用的方法小结。
- java 多态 成员变量
- eclipse创建maven项目
- Installing & Building Spark Environments
- EasyPlayer rtsp播放器源码解析之64位编译方案
- 个人总结php笔试题四
- java-同步锁synchronized
- MySql主从复制
- IDEA中SonarLint的配置
- ajaxfileupload上传文件,返回json数据报错的问题。 Resource interpreted as Document but transferred with MIME type ap
- QT 取消ui->PushButton的边框
- mkdir -p
- public protected private区别
- SpringBoot初始教程之Servlet、Filter、Listener配置(七)