一个 16年毕业生所经历的 PHP 面试

前言:有收获的话请加颗小星星,没有收获的话可以 反对 没有帮助 举报三连

有心的同学应该会看到我这个noteBook下面的其它知识,希望对你们有些许帮助。

本文地址

时间点:2017-11

一、什么是面试

说到面试,还是先说你为什么要离职,

关键字:成长、发展、委屈、领导、钱(工资)突发感想是不是可以抓取下然后分析关键字,哈哈哈

还有

还想看吗

我的理解:面试不是高考,高考只有一次(不说补习),面试可以有n次,只要有面试机会,你就可以一直去面,面到吐为止都没关系,不要怕失败,
公司没选择你不是你不优秀,而是你不符合他们的要求,回家思考下面试不足的地方,调整下心态,准备下个面试才是你正确的做法。

二、面试准备

准备是多方面的,俗话说:成功只留给有准备的人

1. 问:什么时候开始准备?

你是牛人吗 ? 不用准备,等猎头挖 : 老老实实的随时准备好

2. 问:怎么准备?

  • 项目经验是一部分:面试是离不开的,充分理解自己所做的那部分,能在面试中清楚的表述出自己做了什么,充当什么样的角色
  • 自己分享知识的地方:比如博客/github,自己总结的会比去看别人的总结效果好不只一丁半点
  • 基础知识:字符串操作、数组操作、文件操作、正则操作
  • 进阶知识:面向对象、数据结构和算法、设计模式、mysql索引、mysql引擎、mysql事务、mysql锁
  • 高阶知识:linux+nginx+mysql+php+redis 优化,只会操作没用,谁都会,高并发、分布式系统、负载均衡、分库分表、消息队列

三、面试干货

1、某教育机构两面

mysql事务是什么

我说了mysql的四个特性,原子性、一致性、隔离性、持久性,事务可以理解成一次操作要不完成要不失败。
面试官问了隔离性和锁的问题,有点忘了,这个真没答上来
-------------
可以参考下《Innodb中的事务隔离级别和锁的关系》https://tech.meituan.com/2014/08/20/innodb-lock.html

php代码解释过程

我说了通过zend引擎解析成opcode,然后转化成机器识别的代码。
平时确实没有去关注这个,失败失败,查了资料
鸟哥写的《深入理解PHP原理之Opcodes》http://www.laruence.com/2008/06/18/221.html

百度统计的实现原理

我没答上来,自己后面查的
-------------
参考:http://blog.csdn.net/iqzq123/article/details/8877645

如何共享session

我说了通过redis存储session,以达到共享目的,后面查了下方案,还挺多的
-------------
参考:http://www.cnblogs.com/wangtao_20/p/3395518.html#commentform

git分支管理策略

我写了master作为主分支,dev作为开发分支,bug_fix分支作为bug分支
面试官说有个临时bug需要改,而我们在dev上已经开发了很多内容了,我答的是用bug_fix分支拉master代码,
再合回去,面试官说dev怎么办,改了相同的模块会冲突想了下,确实会,然后求教面试官,
面试官说可以用git rebase变基实现,自己见过这个命令,但是没用过,尴尬

restful设计

我说了get、post、put、patch、delete,面试官问他们分别怎么用,毕竟自己做api的
就回答了get是从服务器取资源、post是新建资源、put是
更新完整资源、patch更新部分资源、delete是删除资源,就过了

附加题:论坛的表设计

有点忘了,我答的不是很好,问的是有以下几个需求,请问需要建几张表,为什么?主要考的如何合理的设计表,
比如用户登录信息表可以怎样设计?发帖表和回帖表需要怎样设计?内容字段比较大,怎样设计更好?哪些字段需要加索引?

情景题:一个登录系统的改进

用伪代码实现
第一步:PC端只有两个表单框和注册按钮,后端接收参数,再存入数据库
第二步:添加移动端,需要发送短信
第三步:加入第三方登陆方式,需要发送邮件
第四步:有个兄弟公司,给了我们一张execl表,里面是用户信息,需要后台注册这些用户,如何修改现有的代码
第四步:有点忘了,好像是如何进一步优化

这里第三步就答不好了,考察的是逻辑能力和代码组织能力,设计模式的重要性。

自己最满意的代码

自己自由发挥,项目中遇到的应该是最好答的

了解哪些设计模式,实际用例

我的回答
工厂模式:定义一个标准,用到的类可以按这个标准实现相应功能
单例模式:防止重复实例化,减少资源调用
数据映射:数据库ORM应用
适配器模式:兼容老数据,多态的应用

面试管问了怎么兼容老数据,考察codereview能力

困了,先到这里


2、某电商公司三人面

笔试题挺有意思的,比较能考察出我这样的面试者水平

笔试题的解法见php7.php文件中的24、25、26

将一个二维数组的值首字母大写

题目意思大概是这样的,印象不深很清了
当时做的时候好像做错了,现在想了下,思路是获取键值和值,然后双重循环转大写即可。

使用正则获取html里的href属性的值和a标签内的值,并以href值为key,a标签内的值为value存入二维数组中

大概是这样的结构,我简化了

<ul class="attr">
    <li>
        <a href="www.baidu.com">百度baidu</a>
        <a href='www.tecent.com'>腾讯tengxun</a>
        <a href="www.alibaba.com">阿里巴巴alibaba</a>
    </li>
</ul>

考察正则表达式的运用和数组的拼装,我当时做的稀烂,回去稍微看了下正则,就很容易了。

优化语句查询

test表中数据有500w,字段有id/t_id/type_id/plat_id,语句为select max(t_id) from test where type_id=1 and plat_id=1

考察mysql语句优化,这里主要是优化max函数,max函数会导致全表扫描,效率会很低,可以使用order by加limit进行优化

我是这样答的
select t_id from test where type_id=1 and plat_id=1 order by t_id limit 1;
当然还可以使用加索引进一步优化速度,这里可以加上(type_id/plat_id)联合索引。
-------------
正确做法是给`t_id`加索引,还有(type_id/plat_id)联合索引,order by 并不能避免全表扫描。

找出N个数中的第M大的数

考察算法,貌似是查找?
我当时的想法是先对数组排序,然后索引的N-M的数就是M大的数

Ajax跨域请求时,会出现什么问题?如何解决

我的回答:稀烂,跨域出现问题会出现请求拒绝,是出于安全起见,设置Access-Control-Allow-Origin为*即可。哈哈哈naive
-------------
回去搜了下,方案还挺多的。
参考https://dailc.github.io/2017/03/22/ajaxCrossDomainSolution.html

如何优化一个CPU运算密集的网站

没有实践过对吧,没关系,会google吗?会背吗?脑子能留个大概的原理吗?

自己最满意的 代码

自己自由发挥,项目中遇到的应该是最好答的

其它

简历上的项目询问,项目中最有难度的地方?如何解决的?

困了,睡


3、某民宿杭州分公司一面

没有笔试题,纯面试题,很注重基础,比如操作系统

phpunit的用法

自己平时没注意这个东西,所以答的稀烂,问到有没有连数据库测,我说有,只是用预期数据与数据库查出的数据对比测试
面试官问有没有用过mock
懵逼了,这个概念确实听过,没去做过,意思是造假的意思,通过模拟数据库操作来达到测试目的,还有stub站桩,需要多实践啊骚年 o_o
-------------
参考:https://phpunit.de/manual/current/zh_cn/test-doubles.html

redis异步队列实现细节

看我简历中写用过

我当时用的是laravel中的队列机制,通过dispatch()触发任务,php artisan queue:work 开启后台进程监视队列并完成任务
面试官不满足,问我他的原理,怎样实现的?
我说用的是list,通过触发lpush入队,然后依次rpop出队处理任务
面试官说这是阻塞的,能不能有高效的做法,我说不清楚,面试官好像说可以把一个list的数据放到多个list中并行处理,zzz。

redis中zest如何根据两个属性排序,比如id和age

不知道,只知道根据score分值排序,有知道的同学可以留言
请自行google   redis zset 多字段排序
-------------
查了下,有说先自行排序后存入redis
https://segmentfault.com/q/1010000004669705

你对多进程和多线程还有协程的理解

作为cs专业的phper,大学学的都交给老师了,zzz

进程可以有多个线程,在php中yield可以实现协程,面试官问swoole新版本中自带协程,你怎么理解?
没研究过zzz
-------------
进程是正在运行的程序的实例
进程是内核分配资源的最基本的单元
线程是内核执行的最基本的单元
进程内可以包含多个线程
协程的话相当于语言自己实现一个函数调度
参考:http://www.cnblogs.com/lxmhhy/p/6041001.html

说说怎么理解现在前端框架中的组件化和模块化

看到我会react.js问的

我说就比如react里的组件可以理解为一个class类,模块的意思是一个文件就是一个模块,有单独的作用域
-------------
参考:http://xiaodongtongxue.top/2016/05/20/浅谈前端自动化%20工程化%20组件化%20模块化/

http协议中get和post的区别,怎么实现的

get是获取资源,post创建资源
get数据长度有限制,post无限制
get数据在url中安全性差,post不显示在url中更安全
怎么实现的,懵逼zzz
-------------
参考:https://zhuanlan.zhihu.com/p/22536382

最近在看什么书

送命题,没看过就老实说没看过好了,不然会xxxx,比如我说了看了《图解HTTP》,首先问了我上面那道题,然后说你看的书不够深入,我。。。。

4、某众筹杭州分公司三面

php使用什么mysql连接?

还以为很简单呢,直接说了mysqli和pdo,mysql弃用了
面试官来了句不是问这个,是问连接池
我对这个概念很懵,就回了是持久连接吗,可以用mysql_connect()
面试官再问比如laravel默认使用什么mysql连接的
我猜的是pdo吧
他说再想想
我xxxx,就这样过了
-------------
回去很郁闷的查了下,默认PDO,我还以为是想考察关于php编译时mysqlnd这样的呢
All database work in Laravel is done through the PHP PDO facilities
so make sure you have the driver for your particular database of
choice installed on your machine before you begin development.

场景题:索引的建立规则和explain

有这样一张表 自增id、名字、昵称、年龄、客户类型、创建时间

哪些字段需要建立索引?为什么?

我说年龄、创建时间、客户类型需要建立索引,where条件经常用到的字段
面试官说客户类型用的enum枚举呢,是不是也需要建立索引
我说不清楚
面试官说其实是不需要的,枚举类型只有几种,mysql查询时会分组查,一般写sql前可以用explain观察sql语句

你用的是php版本是哪个?为什么?php7有什么更新?

很幸运,自己一直用的是php7,因为php7速度有很大提升,也有很多新特性,比如标量类型声明、返回类型声明
命名空间、Trait、自动加载都是现代php所需要的
面试官问有自己发不过composer包吗?他的自动加载原理是怎么样的?
自己创建过composer包,没发布,自动加载是通过sql_autoload_register()实现的
面试官说之前都是include引入的对吧,你应该在往前想下
我xxxx
面试官说是当这个文件使用的时候,才会加载进来,以达到自动加载目的。

nginx相关

简历写了了解nginx负载均衡和反向代理,你是怎么做的

php-fpm能代理其他端口吗?除了默认9000

nginx配置php-fpm的时候走的是什么协议?还可以走其他协议吗?

自己搭建的vps,负载均衡是通过多个端口实现的,反向代理是代理到apache
可以走其他端口,需要配置ini文件,走的http协议,其它协议,不知道
面试官说可以走tcp协议,比如socket

看你用过laravel和tp,比较下两款框架

tp是国人写的,理念比较陈旧过时
laravel是现在最火的php框架,开源社区活跃,工具也最多,运用了面向对象的思想和很多设计模式,是值得学习和运用的选择
laravel的源码看过吗?
看过,laravel的container容器,还有ioc控制反转、di依赖注入,通过server provider服务提供者bind绑定实例放入到容器内,
然后通过make解析容器中的某个实例,可以通过facade门面直接静态调用。
面试官说怎么兼容之前的版本,比如像app那样,既发布了新的版本,老版本也需要兼容。
我没做过,我的想法是一通过适配器模式,达到兼容两者的需求,二可以使用dingo/api多版本控制

你未来的发展规划,1年的,3年的

自由发挥,其实也蛮重要的,往积极方面答总没错,比如深入php、扩展技术栈

其他

简历上的项目询问,项目中最有难度的地方?如何解决的?

5、某旅游公司两面

套路真多,这面试官很有代入感

为什么离职

机智点,按你填表里写的离职理由答就行,别露馅了,哈哈哈。

如何选择PHP的?关于目前流行的Java比较?

这里机智点答就行,比较的话讲两者的使用场景,比如php适合web开发,java有多种选择,web和安卓

有没有系统的培训过?有没有看php相关的网络课程和书籍?

我以为是说我有没有去培训过,我当然说没了
我说的是慕课网的优秀课程和《Modern PHP》《PHP核心技术和最佳实践》《PHP the right way》

看你用过laravel和tp, 比较下两款框架

tp是国人写的,理念比较陈旧过时
laravel是现在最火的php框架,开源社区活跃,工具也最多,运用了面向对象的思想和很多设计模式,是值得学习和运用的选择
laravel的源码看过吗?
看过,laravel的container容器,还有ioc控制反转、di依赖注入,通过server provider服务提供者bind绑定实例放入到容器内,
然后通过make解析容器中的某个实例,可以通过facade门面直接静态调用。

php基础知识**

php面向对象说下
封装、继承、多态
多态描述下
当时这里说成了重载了,真是扇自己一巴掌,其实多态是一套接口下面的实现类,注入的是接口类,使用的是实现类,从而实现多态
php的类型有哪些
还真的忘了,掌嘴,没说完整,说了array数组、string字符串、object对象、resource资源、NULL

laravel包**

dingo/api和jwt-auth是自己搭的吗?有没有遇到坑?
当时项目赶,用的集成的,自己搭也是没问题的
entrust怎么用的?有哪些表?
user用户表、role角色表、perm权限表、role-user用户角色关联表、role-perm角色权限关联表
我们还做了扩展,menu菜单表、menu-perm菜单权限关联表

你未来的发展规划, 1年的,3年的

自由发挥,其实也蛮重要的,往积极方面答总没错,比如深入php、扩展技术栈

你可以问我两个问题?

当场黑人问号,为什么是两个问题?
面试官:我想看你的关注点
我说了这边技术团队是怎样的+有没有技术分享+我加入公司将做什么
别问我为什么问了三个,因为我get到了面试官的点,哈哈哈

其 他

简历上的项目询问,为什么离职,之前收获了什么,你期待的公司是怎样的etc
为什么说套路呢,不然发现这个面试官所有准备的题都是有针对性的,后面他就指出我的基础不够扎实,并举例说一个基础扎实的人和
一个基础不扎实的人做同一个东西,基础扎实的可能很快就会做完且不会出错,而不扎实的老是需要google且做出的东西会出错,
也不知道哪里错了,因为是拿来主义并没有转为自己的东西。然后指出我没有系统学习过php,因为php容易入门,
但是学会它需要花很大功夫。最后说我的规划还不错,是加分项,哈哈哈。

四、面试总结

面了5家公司,拿了3份offer,自我感觉还良好吧,哈哈哈。最主要的还是心态、面试准备、面试总结、睡眠质量、水

写的挺流水化的,很多都有点遗忘,毕竟2星期后了,只能记住有意义的题目了。

有心的同学应该会看到我这个noteBook下面的其它知识,希望对你们有些许帮助。

后语:有收获的话请加颗小星星,没有收获的话可以 反对 没有帮助 举报三连

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 6年前 加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 81
WytheHuang

面试造火箭,入职拧螺丝

6年前 评论
巴啦啦

现在公司都考这个了吗?越来越害怕出去面试了哦

6年前 评论
DukeAnn

@仰望 面试难度远高于工作中的难度

6年前 评论
今之人兮

php基础知识**# 第二行动态应该是多态吧

6年前 评论
阿麦

首先楼主很优秀我觉得 其次 现在的面试都这样 面试各种吹 上班以后 你懂的

6年前 评论

很有帮助的帖子,看完之后感觉自己还是太水了,收藏了,感激不尽

6年前 评论
WytheHuang

面试造火箭,入职拧螺丝

6年前 评论

所有的都是杭州的公司么= =

6年前 评论
Kurisu

18年毕业的已经开始瑟瑟发抖.......

6年前 评论
OMGZui

@Edwin 懂就好,已更正 :smile:

6年前 评论
OMGZui

@daryl 都是杭州的

6年前 评论
OMGZui

@MushishiXian 一起加油吧 :smile:

6年前 评论
OMGZui

@Kurisu 18年毕业就开始关注行业动态了,我觉得你已经很超前了,学弟加油。

6年前 评论
OMGZui

@GhostCoder 感谢夸奖,我还差得多呢。

6年前 评论
OMGZui

@WytheHuang
@ADKi
@仰望
不好好准备的话,拧好螺丝的都没机会 :smile:

6年前 评论

14年毕业的感觉自愧不如 :cry:

6年前 评论
OMGZui

@tonyski 老哥,一起加油 :smile:

6年前 评论

面试造火箭,入职拧螺丝.小哥写作能力好强啊。

6年前 评论

git分支管理策略:面试官说可以用git rebase变基实现
但是这并不能改变冲突的发生,只是得到了一个更加简洁的提交历史

6年前 评论
Kurisu

@didiaoyu +1...依旧不明白 变基操作 除了 去除钻石链改变历史在 github 提交日历上画画 之外的作用....

6年前 评论

@Kurisu 应该没其他作用了吧,或许面试官自己都没搞清楚吧 :joy:

6年前 评论
OMGZui

@didiaoyu 哈哈哈 :grin:

6年前 评论

git分支管理策略那题,bug_fix分支拉master代码,再合回去。dev分支怎么办?我一般再把master分支再合并到dev上,如有冲突,手动修改下。这样做是不是太粗暴,哈哈。还有cherry-pick也可以

6年前 评论

使用order by加limit 同样也会进行全表扫描

6年前 评论
OMGZui

@L伟 感谢这位同学指正,说明你有认真阅读 :+1:

6年前 评论

现在找个工作这么难啊,我反正面试都没遇到这么难的题.就考考网上那种难度的笔试题而已.
git分支管理策略那题,dev分支再merge bug分支不就行了,哪需要rebase的

6年前 评论

@梦康 同样不不知道为什么要 使用rebase 就算有冲突,使用rebase依然要手动解决冲突。

6年前 评论

好厉害,16年毕业的瑟瑟发抖,感觉自己太菜了

6年前 评论

厉害, 目前还没面过这么残暴的公司

6年前 评论

@OMGZui 能问一下是哪些公司么= =

6年前 评论

某电商公司
我去面过,面试题都没变,16年5月份去面试的,被pass了,哈哈。
那时候比较水,面试官还问我一些redis集群高并发,说实话,那时候我很懵逼,毕竟以前工作都很少用redis。

6年前 评论
OMGZui

@awh521 哈哈哈,笔试题一般不会变的,面试题也是套路

6年前 评论
OMGZui

@daryl 其实很容易知道是哪些公司,我就不透露了

6年前 评论
OMGZui

@fmaple 一起加油

6年前 评论
OMGZui

@lazyou 正常的套路吧,算不上残暴

6年前 评论

@OMGZui 可能跟城市有关吧. 我这里一两年工作经验的, 基本菜的抠脚....

6年前 评论

@OMGZui dalao 最后去哪了= =求加个微信,我也是杭州的,也去年毕业的= =

6年前 评论
Nickel

关于rebase的那个问题,我看楼上已经有了讨论。我的观点也是,冲突无论如何都是会有的啊。
我还真的以为有什么骚操作可以避免冲突呢。(还跑去查了很久的资料。。。。
在上海的PHPer感觉杭州的面试难度都很逆天啊。

6年前 评论

http://www.cnblogs.com/lxmhhy/p/6041001.ht...

线程进程都是同步机制,而协程则是异步

关于这里说到的协程,我觉的这句话有点问题。不能用同步和异步来描述进程线程。应该这么说,线程和进程都是阻塞的,而协程则是非阻塞的。

6年前 评论

看完以后,,,我害怕了.........................感觉自己好多都答不上来...哎工作久了 感觉自己越来越菜了..

6年前 评论
幽弥狂

没说薪水。麻烦讲一下。看看现在我市值多钱

6年前 评论

我靠~ 感觉这面试我要完啊~ 哎 基础真的很重要

6年前 评论
OMGZui

@736713830 我也很多没答上,多面面就好了

6年前 评论
OMGZui

@xhh110 看经验的吧,一年经验10-12k吧

6年前 评论
OMGZui

@smile的微笑 多面面就好了,平时多积累吧

6年前 评论

@awh521 某电商是贝贝?

6年前 评论

@L伟 给type_id,plat_id,t_id 加联合索引不会全表扫描,排序直接拿的索引顺序

6年前 评论

@L伟 原sql加索引后直接 Select tables optimized away 了

6年前 评论

你对TP的印象有点老, 现在TP5模仿Laravel有模有样的

6年前 评论
OMGZui

@李曦赞 之前用的是TP3.2.3,确实很久没用TP了。

6年前 评论
龙小默

@李曦赞 有点像,但是还差点

6年前 评论

@OMGZui 你好,楼主我想问下面试的过程中会涉及到很多高并发大流量的项目的问题吗?我现在在的公司没有这方面的资源让我学习,怕如果以后面试会遇到这方面的问题

6年前 评论
OMGZui

@MushishiXian 肯定会问的,没实践过没关系,但一定要知道大概原理。

6年前 评论

get到蛮多干货,问个楼主问题,楼主找工作是自己在某app上找的,主要是多大规模公司。另外杭州IT行业前景如何?

6年前 评论

@OMGZui 好的,谢谢了,我回去恶补下这方面的知识

6年前 评论

受益匪浅,点赞,感谢!

6年前 评论

大部分公司都是,面的时候问了一大堆.进去后你发现,我去,你们这都什么玩意儿....

6年前 评论
chenBJ

几乎面熟离不开大数据、使用框架中某个功能的使用原理、设计模式、大数据优化、队列相关的问题、等等,真和上面说的一样面试修火箭............

6年前 评论
Kim

很用心。

6年前 评论
OMGZui

@残夜 BOSS直聘和拉勾,多大公司看自己想去多大的公司,杭州IT在阿里、网易的影响下还是全国前列的

6年前 评论

满满的都是干货 感谢楼主

6年前 评论

@李曦赞 是滴~ 刚学了一部分 TP5 做了个博客,接触到 Laravel 果断弃坑 TP5 了!

6年前 评论

楼主棒棒哒。来学习下。谢谢。

6年前 评论
GalaxyNo_1

学php做自己的项目

6年前 评论

mysql隔离级别有四种,未提交读,提交读,不重复读,可串行化,不重复读不可避免幻读,但是 mysql 通过多版本并发控制即MVCC 解决幻读问题,可串行化是最高级别隔离.它通过强制事务串行执行,在读取每一行数据都加上锁.从而避免了幻读的问题.但是会导致大量超时和锁争用情况.实际无法用这个隔离.锁是mysql 处理并发控制的一种机制,最多的是读写锁,就是在读取和写入的时候通过一种或者2种类型的锁组成锁系统来解决,这2中类型通常被叫做共享锁和拍他锁.就是读锁和写锁啦.叫法不一样而已.其实就是读锁是共享的,写锁是阻塞排他的.

6年前 评论
gitxuzan

@OMGZui 有没有推荐?在杭州,年后去杭州找工作了

6年前 评论
gitxuzan

@OMGZui 杭州的薪资和广州对比怎么样,从广州来杭州这边, 今天面试竟然一口气面试了5个人。

6年前 评论
OMGZui

@GitHacking 不清楚,总体上杭州比上海低20%的样子,你这种面试情况我没碰到过

6年前 评论

spl_autoload_register 写成 sql_autoload_register 了

5年前 评论

想了解下,你这面试的薪水范围?

5年前 评论

最近也在面试, 想了解下 楼主面试薪水范围。。。。

5年前 评论
OMGZui

@largezhou
@Joker_s
这个是去年的了,当时面的是1-3年的岗位,10-15k

5年前 评论

很好的面试总结,反手就是一个赞~

5年前 评论
Shuyi

我感觉我这个面试官对面试者太仁慈了,学到了,GET!哈哈哈

5年前 评论

厉害了, 我是16年5月份开始自学的, 感觉现在和楼主差距不小哦, 要加油了 :+1:

4年前 评论

php-fpm用的协议应该不是http,应该是fastcgi

4年前 评论

能记住这么多面试内容都已经很牛逼了,感谢分享

4年前 评论

mark!!!

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!