腾讯面试题----全是代码编程题
1、请使用 socket 相关函数(非 curl )实现如下功 能:构造一个 post 请求,发送到指定 http server 的指定端口的指定请求路径(如 http://www.phpddt.com:8080/test )。请求中包含以下变量:
用户名( username ):温柔一刀
密码( pwd ): &123=321&321=123&
个人简介( intro ): Hello world !
且该 http server 需要以下 cookie 来进行简 单的用户动作跟踪:
cur_query : you&me
last_tm : … (上次请求的 unix 时间戳,定为当前请求时间前 10 分钟)
cur_tm : … (当前请求的 unix 时间戳)
设置超时为 10 秒,发出请求后, 将 http server 的响应内容输出。
传智播客的答案:
网上的答案
Function encode($data, $sep = ‘&’){while (list($k,$v) = each($data)) {$encoded .= ($encoded ? "$sep" : "");$encoded .= rawurlencode($k)."=".rawurlencode($v);}Return $encoded;}Function post($url, $post, $cookie){$url = parse_url($url);$post = encode($data, ‘&’);$cookie = encode($cookieArray, ‘;’);$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80,$errno,$errstr,10);if (!$fp) return "Failed to open socket to $url[host]";fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query']));fputs($fp, "Host: $url[host]/n");fputs($fp, "Content-type: application/x-www-form-urlencoded/n");fputs($fp, "Content-length: " . strlen($encoded) . "/n");fputs($fp, "Cookie: $cookie/n/n"); fputs($fp, "Connection: close/n/n");fputs($fp, "$post /n");while (!feof($fp)) {echofgets($fp,128);}fclose($fp);} $url = ‘http://www.phpddt.com:8080/test ’;$encoded = username= 温柔一刀 & pwd=$post = array('username' => '温柔一刀' ,'pwd => ‘&123=321&321=123&','intro => ‘Hello world!');$cookie = array('cur_query' => ‘ you&me,'last_tm' =>time() -600,'cur_tm' => time());Post($url, $post, $cookie);
2、使用正则表达式提取一段标识语言( html 或 xml )代码段中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有 空格等)。此处假设需提取 test 标签的 attr 属性值,请自行构建包含该标签的串
<test attr=”ddd”><test attr/s*=/s*[“|’](.*?)[”|’].*?>
3、用 PHP 实现一个双向队列
class DEQueue {//存储protected $_storage = array();//入头public function unshift($element){return array_unshift($this->_storage, $element);}//入尾public function push($element){return array_push($this->_storage, $element);}//出尾public function pop(){return array_pop($this->_storage);}//出头public function shift(){return array_shift($this->_storage);}//长度public function length(){return count($this->_storage);}}
4、 使对象可以像数组一样进行foreach循环,要求属性必须是私有
传播智客版本
网上找的版本
<?class Sample implements iterator{private $var = array(1,2,3,4,5);public function __construct(){}public function rewind(){ reset($this->var);}public function current(){return current($this->var);}public function key(){return key($this->var);}public function next(){return next($this->var);}public function valid(){return ($this->current()!==false);}}$sa = new sample();foreach($sa as $key => $val){print $key . "=>" .$val;}?>
5、 请写一段php代码,确保多个进程 同时写入同一个文件成功
function writeData($path, $mode, $data){ $fp = fopen($path, $mode); $retries = 0;$max_retries = 100; do {if ($retries > 0) {usleep(rand(1, 10000));}$retries += 1;}while (!flock($fp, LOCK_EX) and $retries <= $max_retries); if ($retries == $max_retries) {return false;}fwrite($fp, "$data\\n");flock($fp, LOCK_UN);fclose($fp); return true; }
6、 如何遍历一个文件夹下所有的内容
<?php
$dir = "."; //当前目录
list_file($dir); function list_file($dir){ $list = scandir($dir); // 得到该文件下的所有文件和文件夹 foreach($list as $file){//遍历 $file_location=$dir."/".$file;//生成路径 if(is_dir($file_location) && $file!="." &&$file!=".."){ //判断是不是文件夹 echo "------------------------sign in $file_location------------------"; list_file($file_location); //继续遍历 } echo "<br/>"; }
}
?>
7、二分法和冒泡排序(为什么把这俩在一起说呢,因为他俩都是经常被考到的,而且对于我们的思维逻辑很重要) 二分法 array(1,2,3,4,5,6,7)取出其中一个值的键名
//二分法
function dis($arr,$var) { $max = count($arr); $mid = intval($max/2); if($arr[$mid-1] == $var){ return $mid; } if($arr[$mid-1] >= $var){ $arrs = array_slice($arr,0,$mid); return dis($arrs,$var); }else{ $arrs = array_slice($arr,$mid,$mid); return dis($arrs,$var); } } $arr = array(1,2,3,4,5,6,7,9); echo $a = dis($arr,2);
//冒泡
$arr = array(1,5,2,23,64,27); foreach($arr as $key=>$val){ for($i=0;$i<count($arr);$i++){ $var = ''; if($arr[$i] < $arr[$i+1]){ $var = $arr[$i]; $arr[$i] = $arr[$i+1]; $arr[$i+1] = $var; } } } print_r($arr);
8、将一个多维数组转化成一维数组
<?php
function splitArray($array){ static $res = array(); foreach($array as $Key=>$val){ if(is_array($val)){ splitArray($val); }else{ array_push($res,$val); } } return $res;
}
$array = array(1,2,array(2,array(array(3),array(4),5),6));
$res = splitArray($array);
print_r($res);
?>
9、使用正则表达式提取一段标识语言( html 或 xml )代码段中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有 空格等)。此处假设需提取 test 标签的 attr 属性值,请自行构建包含该标签的串
<test attr=”ddd”>
<test attr/s*=/s*[“|’](.*?)[”|’].*?>
10、写一个函数,尽可能高效的,从一个标准url里取出文件的扩展名,例如:http://www.sina.com.cn/abc/de/fg.php?id=1需要取出php或.php(新浪)
11、使用正则表达式提取一段标识语言(html或xml)代码段中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有空格等)。此处假设需提取test标签的attr属性值,请自行构建包含该标签的串(腾讯)
腾讯面试题----全是代码编程题相关推荐
- java在线编程题_阿里笔试题(2017在线编程题)-- 数串分组 --Java实现
看到有人写了阿里的面试题,心里痒痒,好久 没搞过这些了,写着实现一下 题目 2017年3月阿里在线编程题(实习内推) 给定一串数字 判断是否存在这三个元素,它们将数字串分为四个子串,其中每个子串的数字 ...
- 多益面试题简答题和编程题解析
今日做完多益的笔试题,五道简答题对于英语渣渣的我来说其实只有三道题,回答的时候都是云里雾里的一脸懵逼,交卷后特意查了一下答案,以此铭记. 1.编程语言和脚本语言的区别 对于程序员而言,目前从事的行业基 ...
- 阿里笔试题(2017在线编程题)-- 数串分组 --Java实现
看到有人写了阿里的面试题,心里痒痒,好久 没搞过这些了,写着实现一下 题目 2017年3月阿里在线编程题(实习内推) 给定一串数字 判断是否存在这三个元素,它们将数字串分为四个子串,其中每个子串的数字 ...
- java校招面试题_java校招面试编程题及答案.docx
java校招面试编程题及答案 java校招面试编程题及答案 Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点.这里,我列出了一些关于Java集合的重要问题和答案. 集合框 ...
- c语言面试编程笔试题,C语言面试编程题
C语言面试编程题 发布时间:2021-04-10 在C语言中,输入和输出是经由标准库中的一组函数来实现的.在ANSI/ISO C中,这些函数被定义在头文件;中.下面就由第一范文网小编为大家介绍一下C语 ...
- 嵌入式笔试面试题(不含编程题)
嵌入式考试面试题(部分) 该说不说很多厉害的up发表了很多资料,我也有查阅一些,下面是我所永远的点点资料,目前只有填空部分,大家如果看了下面的并且完成了记得私发一份哈哈 那么正题开始!!! 填空 在L ...
- ajax代码编程题,关于AJAX管家代码的几个基本问题
//Why are we calling/redefining the xmlHttp variable? 我们不是. // Why define it as createXmlHttpRequest ...
- ❤️大厂编程题实战+Leecode练习
前言+说明 ❤️旺仔兄弟们!如果觉得博主分享的不错,希望能留下您的一键❤️三连❤️(点赞+评论+收藏) ,您的支持就是我的动力❤️,您的三连对我特别重要. 注明:下述题目只用于学习交流所用,禁止用于商 ...
- 编程 ul 不能一行显示 跳到下行_史上最全的数控G代码编程详解
一.G代码功能简述 G00------快速定位 G01------直线插补 G02------顺时针方向圆弧插补 G03------逆时针方向圆弧插补 G04------定时暂停 G05------通 ...
最新文章
- Linux下connect超时处理
- 简单android音乐播放器课程设计,android音乐播放器课程设计报告.doc
- Android Linker学习笔记
- Java02-day02【运算符(赋值、关系、逻辑、三元、算数、自增自减)、分支语句(顺序结构、if语句)】
- 硬件:LCD和LED相关知识介绍
- Python工作笔记-往dll中传入char*类型的参数并且如何接收char*的值
- 华为p20云收藏怎么删除_华为平板怎么记笔记?这款云笔记软件帮你
- 理想职业计算机程序英语作文,Choosing the Right Career理想的职业英语作文
- 计算机网络-扩展路由器
- MySQL的详细安装教程和配置过程(附安装包)
- SSH2开发简易的购物网站源代码下载
- word中带圈字符字体显示大小和位置不正常
- 【复盘】互联网老辛七月复盘-年中flag
- iphone 图片等比例缩小
- C++实现matlab中的interp1和interp2插值
- Matlab浮点变定点
- Docker拉取splash镜像失败
- [转]Android入门基础教程
- FinClip Hackathon 那些令人拍案叫绝的项目
- statistical thinking in Python EDA