【www.zhuodaoren.com--推荐阅读】
第一篇:《php面试题_腾讯内部》
公司面试题之:腾讯PHP工程师笔试题
1. 请对POSIX风格和兼容Perl风格两种正则表达式的主要函数进行类比说明
ereg preg_match
ereg_replace preg_replace
2. 请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响
3. PHP5中魔术方法函数有哪几个,请举例说明各自的用法
__sleep
__wakeup
__toString
__set_state
__construct,
__destruct
__call,
__get,
__set,
__isset,
__unset
__sleep,
__wakeup,
__toString,
__set_state,
__clone
__autoload
4. 请写出让,并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?
5. PHP的垃圾收集机制是怎样的
6.使对象可以像数组一样进行foreach循环,要求属性必须是私有。
(Iterator模式的PHP5实现,写一类实现Iterator接口)
7.请写一段PHP代码,确保多个进程同时写入同一个文件成功
8. 用PHP实现一个双向队列
9. 使用正则表达式提取一段标识语言(html或xml)代码段中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有空格等)。此处假设需提取test标签的attr属性值,请自行构建包含该标签的串
<test attr=”ddd”>
<test attr\s*=\s*[“ ¦’](.*?)[” ¦’].*?>
10.请使用socket相关函数(非curl)实现如下功能:构造一个post请求,发送到指定http server的指定端口的指定请求路径(如: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-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)) {腾讯php面试题。
echo fgets($fp, 128);
}
fclose($fp);
}
$url = ‘[url]:8080/test[/url]’;
$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);
11.你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?
1.脚本执行时间,启用xdebug,使用WinCacheGrind分析。
2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。
PHP LAMP Engineer Test Paper
Question 1
What does <? echo count ("123") ?> print out?
A) 3
B) False
C) Null
D) 1
E) 0
Question 2
Which of the following snippets prints a representation of 42 with two decimal places?
A) printf("%.2d\n", 42);
B) printf("%1.2f\n", 42);
C) printf("%1.2u\n", 42);
Question 3
Given
$text = 'Content-Type: text/xml';
Which of the following prints 'text/xml'?
A) print substr($text, strchr($text, ':'));
B) print substr($text, strchr($text, ':') + 1);
C) print substr($text, strpos($text, ':') + 1);
D) print substr($text, strpos($text, ':') + 2);
E) print substr($text, 0, strchr($text, ':')
Question 4
What is the value of $a?
<?php
$a = in_array('01', array('1')) == var_dump('01' == 1);
?>
A) True
B) False
Question 5
What is the value of $result in the following PHP code?
<?php
function timesTwo($int) {
$int = $int * 2;
}
$int = 2;
$result = timesTwo($int);
?>;
Answer: NULL
Question 6
The code below ___________ because ____________.
<?php
class Foo {
?>
<?php
function bar() {
print "bar";
}
}
?>
A) will work, class definitions can be split up into multiple PHP blocks.
B) will not work, class definitions must be in a single PHP block.
C) will not work, class definitions must be in a single file but can be in multiple PHP blocks.
D) will work, class definitions can be split up into multiple files and multiple PHP blocks. Question 7
When turned on, ____________ will _________ your script with different variables from HTML
第二篇:《腾讯php新面试题》
1.----------------------------
setcookie('a','value');
print $_COOKIE['a'];
输出结果是啥?
答:value
------------------------------
2.----------------------------
try {
require_once "aaa";
print "aaa";
} catch (Exception $e) {
echo 'dddd';
}
结果是啥?
答:没有输出。程序退出。
如果修改为:
try {
include_once "aaa";
print "aaa";
} catch (Exception $e) {
echo 'dddd';
}
则输出aaa
或者修改为:
try {
if(!include_once "aaa") {
}
print "aaa"; throw new Exception;
} catch (Exception $e) {
echo 'dddd';
}
则输出dddd
------------------------------
3.----------------------------
用JS实现trim函数
答:虽然javascript中没有trim()函数,但是可以使用正则表达式实现trim()函数的功能。 <script type="text/javascript">
String.prototype.trim = function() { } function Testtrim() { } Testtrim(); var TestStr = " yingfm "; alert("("+TestStr.trim()+")"); var reg = /^\s*(.*?)\s*$/; return this.replace(reg,"$1");
</script>
------------------------------
4.----------------------------
<script src="1.js" >alert(1);</script>
输出啥?
答:
------------------------------
5.----------------------------
<script type="text/javascript">alert(["a","b","c","d","e"][[1,2],3,4]);</script>
输出啥?
答:e
------------------------------
6.----------------------------
类似这样的aaa<em>sss</em>ddd字符串,写个函数CutStr($str,$max)实现截取:
1)如果$max大于$str的长度则返回$str
2)<em>和</em>不包含在长度计算范围。
例:
如果CutStr("aaa<em>sss</em>ddd",6) 则返回aaa<em>sss</em>.
如果CutStr("aaa<em>sss</em>ddd",4) 则返回aaas,不包含<em>标签
------------------------------
7.----------------------------
不使用php内置函数实现数组排序,如果value相等,比较key的值。例: array("d" => 100,"c" => 22, "a" => 22);
答:
简单排序:
<?php
$data = array(5,8,1,7,2);
sort($data);//从低到高排序
print_r($data);
rsort($data);//从高到低排序
?>
输出:
Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 7 [4] => 8 )
Array ( [0] => 8 [1] => 7 [2] => 5 [3] => 2 [4] => 1 )
根据关键字排序:
<?php
$data = array("US"=>"United States","IN"=>"India","DE"=>"Germany","ES"=>
"Spain");
ksort($data);//它的相反排序函数krsort()
print_r($data);
?>
输出:
Array ( [DE] => Germany [ES] => Spain [IN] => India [US] => United States ) 根据值排序:使用asort()代替ksort()就可以。它的相反排序arsort()
Array ( [DE] => Germany [IN] => India [ES] => Spain [US] => United States ) 自然语言排序: natsort(),对它的相反操作可以使用array_reverse() <?php
$data = array("book-1","book-10","book-100","book-5");
sort($data);
print_r($data);
natsort($data);
print_r($data);
?>
输出结果:
Array ( [0] => book-1 [1] => book-10 [2] => book-100 [3] => book-5 ) Array ( [0] => book-1 [3] => book-5 [1] => book-10 [2] => book-100 ) 根据用户自己定义的规则排序:
<?php
function sortByLen($a, $b) {
}
$data = array("joe@", "@", "asmithsonian@", "jay@");
usort($data, 'sortByLen');
print_r($data); if (strlen($a) == strlen($b)) { return 0; } else { } return (strlen($a) > strlen($b)) ? 1 : -1;
?>
多维排序:
<?php
$data = array(array("id" => 1, "name" => "Boney M", "rating" => 3), array("id" => 2, "name" => "Take That", "rating" => 1),
array("id" => 3, "name" => "The Killers", "rating" => 4), array("id" => 4, "name" => "Lusain", "rating" => 3)
);
foreach ($data as $key => $value) {
$name[$key] = $value['name'];
$rating[$key] = $value['rating'];
}
array_multisort($rating, $name, $data);
print_r($data);
?>腾讯php面试题。
------------------------------
8.----------------------------
数据库中有两个字段 id, sorce.假设sorce的取值范围是 5-10. 按照以下概率实现sorce数据的更新。
5(25%) => 6 5(25%) => 7
6(20%) => 7
7(25%) => 8 7(25%) => 6
8(10%) => 6 8(25%) => 9
9(15%) => 8 9(20%) => 10
10(25%) => 9
要求考虑性能及扩展性。写出概率分布相关代码。
------------------------------
9.----------------------------
第三篇:《腾讯php面试题》
说在前面: 1、以下题目,除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源,请节约使用。编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了。 2、时间: 基础任务+进阶任务+设计任务 = 90分钟腾讯php面试题。编程任务 = 60分钟 基础任务: 1、请列举你能想到的UNIX信号,并说明信号用途。 2、请列举、你能想到的所有的字符串查找算法,并加注释简单说明。 3、有一个IP地址(192.168.0.1),请写出其32位无符号整数形式。 4、写出、你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面) 基础任务-选作(会得到额外分数): 1、画几个你最熟悉的SERVER端模型出来(格式不重要,尽量将图画清楚,说明思路即可) 进阶任务: 1、PHP的垃圾收集机制是怎样的? 说明: 1)如果,你熟悉PHP源码,那么请从源码入手,回答些问题,会获得额外加分 2)如果,你不熟悉PHP源码,那么尽你所能,多写点东西,包括利用自己的编程直觉得到的信息,都可以。 3)对,则有分,错误不扣,不写无分。 2、请写出HTTP头,并符合以下要求: 1)这是一个post请求 2)目标::8080/test 3)POST变量: username: test pwd: test2 intro: Hello world! 4)包含以下COOKIE信息: cur_query: you&me 说明: 1)如果,你记不得某个HTTP协议中的指令字了,那么,无奈这举是用“汉字”代替。 2)如果,你能记住更多的HTTP协议指令字,那么多写几句,总是没坏处,对吧? 3)最关键的,只需要画出正确的“轮廓”(还记得httpwatch等工具打印出来的头部吗?那就是“轮廓”的含义),也会有分数,但如果,连“轮廓”都写错了,那么就很遗憾了。 设计任务: 1、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东 要求如下: 1)要求每个QQ号码(假设此QQ号码在UNIT32内可以表示)10分钟这内只能投5票。 2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。 说明: 1)无需写代码,只需要图跟文字即可。 2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。 3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。 4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,
用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分。 编程任务: 1、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧。 要求如下: 1)/myworks/example/bbe.txt,98版本英文圣经一本 2)输入部分要求如下:php ./example.php [单词] 3)输出部分如下:[单词] 1,2 2,4 5,6 表示:此单词在1行2列(第二个单词),2行4列... 说明: 1)此文本4MB之巨... 2)单词的含义:由英文字母(大小写),数字(0-9)组成的串 3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的 4)上机考试不允许上网,但我装了man文档以及读取CHM以及PDF的阅读器,在电脑的桌面的CHM文件夹中,有相应的PHP参考手册 5)算法复杂度要求不能大于O(N^2)(就是N的平方) 6)什么?PHP低效且用起来不顺手,好的,你可以用别的语言来实现。但注意:提供给你的机器上只有python 2.4/perl 5.8/gcc[g++] 4.1
第四篇:《php面试题_腾讯》
【公司面试题之:腾讯PHP工程师笔试题】
1. 请对POSIX风格和兼容Perl风格两种正则表达式的主要函数进行类比说明 ereg preg_match
ereg_replace preg_replace
2. 请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响
3. PHP5中魔术方法函数有哪几个,请举例说明各自的用法
__sleep
__wakeup
__toString
__set_state
__construct,
__destruct
__call,
__get,
__set,
__isset,
__unset
__sleep,
__wakeup,
__toString,
__set_state,
__clone
__autoload
4. 请写出让,并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?
5. PHP的垃圾收集机制是怎样的
6.使对象可以像数组一样进行foreach循环,要求属性必须是私有。
(Iterator模式的PHP5实现,写一类实现Iterator接口)
7.请写一段PHP代码,确保多个进程同时写入同一个文件成功
8. 用PHP实现一个双向队列
9. 使用正则表达式提取一段标识语言(html或xml)代码段中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有空格等)。此处假设需提取test标签的attr属性值,请自行构建包含该标签的串
<test attr=”ddd”>
<test attr\s*=\s*[“ ¦’](.*?)[” ¦’].*?>
10.请使用socket相关函数(非curl)实现如下功能:构造一个post请求,发送到指定http server的指定端口的指定请求路径(如:8080/test)。请求中包含以下变量:腾讯php面试题。
用户名(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-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)) {
echo fgets($fp, 128);
}
fclose($fp);
}
$url = ‘[url]:8080/test[/url]’;
$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);
11.你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?
1.脚本执行时间,启用xdebug,使用WinCacheGrind分析。
2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。
PHP LAMP Engineer Test Paper
Question 1
What does <? echo count ("123") ?> print out?
A) 3
B) False
C) Null
D) 1
E) 0
Question 2
Which of the following snippets prints a representation of 42 with two decimal places?腾讯php面试题。
A) printf("%.2d\n", 42);
B) printf("%1.2f\n", 42);
C) printf("%1.2u\n", 42);
Question 3
Given
$text = 'Content-Type: text/xml';
Which of the following prints 'text/xml'?
A) print substr($text, strchr($text, ':'));
B) print substr($text, strchr($text, ':') + 1);
C) print substr($text, strpos($text, ':') + 1);
D) print substr($text, strpos($text, ':') + 2);
E) print substr($text, 0, strchr($text, ':')
Question 4
What is the value of $a?
<?php
$a = in_array('01', array('1')) == var_dump('01' == 1); ?>
A) True
B) False
Question 5
What is the value of $result in the following PHP code? <?php
function timesTwo($int) {
$int = $int * 2;
}
$int = 2;
$result = timesTwo($int);
?>;
Answer: NULL
Question 6
The code below ___________ because ____________. <?php
class Foo {
?>腾讯php面试题。
<?php
function bar() {
print "bar";
}
}
?>
A) will work, class definitions can be split up into multiple PHP blocks.
第五篇:《腾讯PHP面试必备知识》
腾讯 面试必备知识
个人面试准备总结记录
2011/10/8 PHP
目录
1. php的垃圾回收机制 ...................................................................................................................... 4 2. session与cookie的区别和联系 .................................................................................................... 4 3. 如何修改SESSION的生存时间 ...................................................................................................... 4 4. PHP页面重定向的方法有哪些 ...................................................................................................... 4 5. PDO、adoDB、PHPLib数据库抽象层比较 ................................................................................... 5 6. 长连接、短连接的区别和使用...................................................................................................... 5 7. HTTP协议详解、应用 .................................................................................................................... 6 8. 异构系统通讯中的通讯加密方案.................................................................................................. 6 9. socket连接步骤 .............................................................................................................................. 6 10. TCP协议,三次握手、四次挥手 .................................................................................................. 7 11. php中常用作用相似,性能差异很大的函数区分及举例 .......................................................... 8 12. posix及perl兼容正则比较,及函数性能分析 ............................................................................ 8 13. 实现PERL正则表达式,抓取html文件a标签的所有href超链接 .......................................... 8 14. 预定义变量、魔术变量、魔术方法比较,及作用举例 .............................................................. 9 15. spl常用数据结构类 ...................................................................................................................... 10 16. PHP设计模式 ................................................................................................................................ 10 17. 负载均衡的web应用服务器设计,例如youku ........................................................................ 10
用PHP做负载均衡指南 ............................................................................................................. 10 18. 如何优化前端性能 ....................................................................................................................... 11 19. yahoo的34条前端优化法则 ...................................................................................................... 11 20. 数据库缓存的基本理论,参考memcached ............................................................................... 11 21. MVC理论,及个人框架设计思路,关键代码设计 ................................................................... 12 22. PHP缓存机制 ................................................................................................................................ 12 23. PHP安全模式 ................................................................................................................................ 13 24. 常见的web攻击方式 .................................................................................................................. 13 25. PHP做好防盗链的基本思想 防盗链 .......................................................................................... 14 26. HTTP请求头信息和响应头信息 .................................................................................................. 15
27. MySQL ............................................................................................................................................ 15
MySQL数据库性能优化................................................................................................................... 15
MySQL Query语句优化的基本思路和原则 .................................................................................... 16
MySQL 中MyISAM引擎和InnoDB引擎的区别以及它们的性能 ................................................ 16
MySQL存储引擎 .............................................................................................................................. 16 28. Apache ........................................................................................................................................... 17 29. Ajax ................................................................................................................................................ 17
用JS实现Ajax功能 ......................................................................................................................... 17 30. Javascript ....................................................................................................................................... 17
1. php的垃圾回收机制
PHP可以自动进行内存管理,清除不需要的对象。
PHP使用了引用计数(reference counting) GC机制。
每个对象都内含一个引用计数器refcount,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为NULL,计数器减1。当某个对象的引用计数器为零时,PHP知道你将不再需要使用这个对象,释放其所占的内存空间。
参考 /') ;
2. echo '<meta http-equiv="Refresh" content="0;url=/" >';
3 echo '<script>window.location.href= </script>';
5. PDO、adoDB、PHPLib数据库抽象层比较
PHP数据库抽象层就是指,封装了数据库底层操作的介于PHP逻辑程序代码和数据库之间的中间件。
PDO以PHP 5.1为基础进行设计,它使用C语言做底层开发,设计沿承PHP的特点,以简洁易用为准,从严格意义上讲,PDO应该归为PHP 5的SPL库之一,而不应该归于数据抽象层,因为其本身和MySQL和MySQLi扩展库的功能类似。PDO是不适合用在打算或者有可能会变更数据库的系统中的。
ADODB不管后端数据库如何,存取数据库的方式都是一致的;
转移数据库平台时,程序代码也不必做太大的更动,事实上只需要改动数据库配置文件。提供了大量的拼装方法,目的就是针对不同的数据库在抽象层的底层对这些语句进行针对性的翻译,以适应不同的数据库方言!但是这个抽象层似乎体积过于庞大了,全部文件大概有500K左右,如果你做一个很小的网站的话,用这个似乎大材小用了
PHPLib可能是伴随PHP一同成长最老的数据库抽象层(但和ADODB相比,它只算是一个MySQL抽象类库),这个抽象类使用方法相当简单,体积小,是小型网站开发不错的选择。
PDO提供预处理语句查询、错误异常处理、灵活取得查询结果(返回数组、字符串、对象、回调函数)、字符过滤防止SQL攻击、事务处理、存储过程。
ADODB支持 缓存查询、移动记录集、(HTML、分页、选择菜单生成)、事务处理、输出到文件。 参考
6. 长连接、短连接的区别和使用
长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P通信。
短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S通信。
长连接与短连接的使用时机:
长连接:
短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据就可以了,不用再建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪费。
短连接:
web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。
参考/Roberts/archive/2010/12/05/1986550.html
本文来源:http://www.zhuodaoren.com/tuijian66129/
推荐访问:腾讯前端面试题 腾讯产品面试题