某 游戏公司 php 面试题
1。实现未知宽高元素的水平垂直居中,至少两种方法。
<div, class="father">
<div class="son"></div>
</div>
//1
.father{
position:relative;
}
.son{
margin:auto;
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
//2
.father{
display:-webkit-flex;
align-items:center;
justify-content:center;
}
.son{
margin:auto;
}
https://www.jianshu.com/p/9206cf198c33
2。vue有哪些生命周期有哪些阶段?
一共8个阶段
1、beforeCreate(创建前)
2、created(创建后)
3、beforeMount(载入前)
4、mounted(载入后)
5、beforeUpdate(更新前)
6、updated(更新后)
7、beforeDestroy(销毁前)
8、destroyed(销毁后)
3。在vue中,父子组件之间如何进行通信。
https://blog.csdn.net/qq_25479327/article/details/81022339
1.父组件传递数据给子组件
父组件:
//这里必须要用 - 代替驼峰
data(){ return { msg: [1,2,3] }; }
子组件通过props来接收数据:
props: ['childMsg']
2.子组件与父组件通信
子组件: <div @click="up">
methods: { up() { this.$emit('upup','hehe'); //主动触发upup方法,'hehe'为向父组件传递的数据 } }
父组件:
//监听子组件触发的upup事件,然后调用change方法
methods: { change(msg) { this.msg = msg; } }
4。什么是SQL注入和XSS攻击,如何避免。
SQL注入:用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。
防止:
使用mysql_real_escape_string()过滤数据
手动检查每一数据是否为正确的数据类型
使用预处理语句并绑定变量
参数化SQL:是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,用@或?来表示参数。
XSS攻击 :跨站点脚本攻击,由用户输入一些数据到你的网站,其中包括客户端脚本(通常JavaScript)。如果你没有过滤就输出数据到另一个web页面,这个脚本将被执行。
防止:为了防止XSS攻击,使用PHP的htmlentities()函数过滤再输出到浏览器。
5。简单阐述一下,什么是横向分表和纵向分表,各自有什么优缺点。
横向分表
是把大的表结构,横向切割为同样结构的不同表,如,用户信息表,user_1,user_2,表结构是完 全一样,根据某些规则来划分表,如根据用户id划分。
分表理由:根据数据量的规模来划分,保证单表的容量不会太大,从而来保证单表的查询等处理能力。
纵向分表
将本来可以在同一个表的内容,人为划分为多个表。
分表理由:根据数据的活跃度进行分离
6。MYSQL把一个大表拆分多个表后,如何解决跨表查询效率问题。
大表分表后每个表的结构相同,可以用sql的union
比如a,b表结构相同可以通过union来联接
select * from a
union all
select * from b
where
。。。。
https://www.wandouip.com/t5i146798/
7。有如下成绩表(表1),现需将其转换成如表2所示的结构,请写出sql语句。
表1
表2
SELECT name,
max(case when subject='语文' then score else 0 end) as 语文,
max(case when subject='数学' then score else 0 end) as 数学,
max(case when subject='英语' then score else 0 end) as 英文,
sum(score) as 总分
FROM `chengji` group by name
8。请简述memcached、redis、mongodb的区别和联系。
都是非关系型数据库,性能都非常高,但是mongoDB和memcache、redis是不同的两种类型。后两者主要用于数据的缓存,前者主要用在查询和储存大数据方面,是最接近数据库的文档型的非关系数据库。
从数据存储位置上来分,memcache的数据存在内存中,而redis既可以存储在内存中,也可以存储的到磁盘中,达到持久化存储的功能,memcache一旦断电,数据全部丢失,redis可以利用快照和AOF把数据存到磁盘中,当恢复时又从磁盘中读取到内存中,当物理内存使用完毕后,可以把数据写入到磁盘中。
从存储数据的类型上来分,memcache和redis存储的方式都是键值对,只不过redis值的类型比较丰富,有string(字符串),hash(哈希),list(列表),set(集合)zset(有序集合),而memcache主要存储的是字符串。
9。面向对象有哪些特性?并请简述private、protected、public修饰符的访问权限。
三大特性:封装,继承,多态。
https://www.cnblogs.com/xuan584521/p/6395923.html
https://blog.csdn.net/benpaodelulu_guajian/article/details/77508405
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
10。什么是抽象类和接口,有什么区别。
http://www.php.cn/php-weizijiaocheng-372186.html
https://www.cnblogs.com/vinter/p/8716685.html
抽象类:是基于类来说,其本身就是类,只是一种特殊的类,不能直接实例,可以在类里定义方法,属性。类似于模版,规范后让子类实现详细功能。
接口:主要基于方法的规范,有点像抽象类里的抽象方法,只是其相对于抽象方法来说,更加独立。可让某个类通过组合多个方法来形成新的类。
抽象类与接口的相同点:
1、都是用于声明某一种事物,规范名称、参数,形成模块,未有详细的实现细节。
2、都是通过类来实现相关的细节工作
3、语法上,抽象类的抽象方法与接口一样,不能有方法体,即{}符号
4、都可以用继承,接口可以继承接口形成新的接口,抽象类可以继承抽象类从而形成新的抽象类
抽象类与接口的不同点:
1、抽象类可以有属性、普通方法、抽象方法,但接口不能有属性、普通方法、可以有常量
2、抽象类内未必有抽象方法,但接口内一定会有“抽象”方法
3、语法上有不同
4、抽象类用abstract关键字在类前声明,且有class声明为类,接口是用interface来声明,但不能用class来声明,因为接口不是类。
5、抽象类的抽象方法一定要用abstract来声明,而接口则不需要
6、抽象类是用extends关键字让子类继承父类后,在子类实现详细的抽象方法。而接口则是用implements让普通类在类里实现接口的详细方法,且接口可以一次性实现多个方法,用逗号分开各个接口就可
11。__autoload()方法的作用是什么,请简述它的工作原理。
通过定义这个函数来启用类的自动加载。
使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。包括new(实例化类)的时候,也包括extends的时候。甚至反序列化的时候,也会调用__autoload函数。__autoload要与require函数相结合。
这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时,就提示错误。
12。如何判断一个文件或一个目录是否绝对可写。
在PHP中,可用is_writable()函数来判断一个 文件/目录 是否可写
bool is_writable ( string $filename )
如果文件存在并且可写则返回 TRUE。($filename 参数可以是一个目录名,即检查目录是否可写。 )
https://www.cnblogs.com/52php/p/5665458.html
13。请编写至少2个自定义函数获取指定文件的后缀名。
1.$file = 'x.y.z.png';
echo substr(strrchr($file, '.'), 1);
解析:strrchr($file, '.')
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符
2.$file = 'x.y.z.png';
echo substr($file, strrpos($file, '.')+1);
解析:strrpos($file, '.')
查找 "." 在字符串中最后一次出现的位置,返回位置 substr()从该位置开始截取
https://blog.csdn.net/wuxianbing2012/article/details/79656724
14。strtolower()和strtoupper()函数可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换。
function str_toupper($str)
{
if(!is_string($str))
{
return $str;
}
$strOut = '';
$strArr = str_split($str,1);
foreach($strArr as $val)
{
if(ord($val) >= ord('a') && ord($val) <= ord('z'))
{
$strAsc = ord($val);
$strAsc += ord('A') - ord('a');
$val = chr($strAsc);
}
$strOut .= $val;
}
return $strOut;
}
function str_tolower($str)
{
if(!is_string($str))
{
return $str;
}
$strOut = '';
$strArr = str_split($str,1);
foreach($strArr as $val)
{
if(ord($val) >= ord('A') && ord($val) <= ord('Z'))
{
$strAsc = ord($val);
$strAsc += ord('a') - ord('A');
$val = chr($strAsc);
}
$strOut .= $val;
}
return $strOut;
}
https://blog.csdn.net/MiracleC/article/details/78886168
15。请编写一个自定义函数,获取一个目录的最简形式,(例:输入:/a/b/c/../../x/y/ 输出:/a/x/y/)
16。什么是nginx的平滑重启,请简述其工作原理。
在服务器开发过程中,难免需要重启服务加载新的代码或配置,如果能够保证server重启的过程中服务不间断,那重启对于业务的影响可以降为0。
https://mp.weixin.qq.com/s?__biz=MzIxNzg5ODE0OA==&mid=2247483660&idx=1&sn=b78b07de401eb7c08b6b7ba70c68cf00&chksm=97f38cc7a08405d18ecca5cf9af523b1d2f3294a603a08d810664aa4986b481eda82eee78626&utm_medium=hao.caibaojian.com
17。linux环境下,如何更改文件名同时将文件移到其它指定目录。
mv /old_path/file1 /new_path/file2
19。如何同步远程服务器上的指定目录到本地服务器。
使用git,svn,ftp
20。GIT如何查看当前分支,如何切换分支,以及如何解决冲突。
1. 查看远程分支
git branch -a
带有“*”号的表示当前分支
2. 查看本地分支
git branch
3. 切换分支命令
git checkout -b v1 origin/v1
# 切换回master
git checkout master
4.解决冲突
情景一:多个分支代码合并到一个分支时;
在当前分支上,直接修改冲突代码--->add--->commit。
情景二:多个分支向同一个远端分支推送代码时;
在本地当前分支上,修改冲突代码--->add--->commit--->push
某 游戏公司 php 面试题的更多相关文章
- [Unity3D]上海某大型游戏公司的基础面试题
一个小老乡跟我聊到去上海某大公司的基础面试题,面试结果不尽如人意,但还是分享了下面试的试题,刚刚第一次录制视频,给某人讲课,我感觉讲的还算比较耐心,但发现一些新手入门学习的弊端,可能是很普遍的现象,这 ...
- 为什么游戏公司的server不愿意微服务化?
背景介绍 笔者最近去面试了家游戏公司(有上市).我问他,公司有没有做微服务架构的打算及考量?他很惊讶的,我没听说过微服务耶,你可以解释一下吗? 我大概说了,方便测试,方便维护,方便升级,服务之间松耦合 ...
- 【转】2012年7月9 – 知名网页游戏公司 PHP高级工程师 最新面试题
开头先唠叨两句,今天下午,上海的天热的让人窒息啊.Google下地图,好远!要做公交,想想就是人挤人.咬了下牙,打的,尼玛百来块啊,有木有!麻麻的,更让我萌生买车的决心了. 到了公司,环境不错.前台拿 ...
- 某游戏公司(凯英网络)PHP开发工程师笔试题
- 2019 边锋游戏java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.边锋游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了边锋游戏,入职一年时间了,也成为了面 ...
- 2019 乐逗游戏java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.乐逗游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了乐逗游戏,入职一年时间了,也成为了面 ...
- 2019 顺网游戏java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.顺网游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了顺网游戏,入职一年时间了,也成为了面 ...
- 2019 盛趣游戏java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.盛趣游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了盛趣游戏,入职一年时间了,也成为了面 ...
- Unity游戏程序员面试题及解答
典型的一些如手写排序算法.一些基本数学问题,在此就不列举了.以下整理出一些代表性的.有参考价值的题,真实面试题,附有本人的解答,欢迎讨论. 题1.指出下列哪些属于值类型? int System.Obj ...
随机推荐
- rethinkDB python入门
Start the server For a more detailed look, make sure to read the quickstart. $ rethinkdb Import the ...
- Go By Example-值类型
Go By Example-值类型 Go语言的数据类型可以分为值类型和引用类型,这里先说值类型. 值类型 值类型:在Go语言中int.float.bool和string这些类型都属于值类型,使用这些类 ...
- 8. String to Integer (atoi) ---Leetcode
Implement atoi to convert a string to an integer. 题目分析: 题目本身很简单就是将一个字符串转化成一个整数,但是由于字符串的千差万别,导致在实现的时候 ...
- Linux系统中rm删除命令
rm命令 1.可以删除一个目录中的一个或多个文件或目录 2.可以将某个目录及其下属的所有文件及其子目录均删除掉 3.对于链接文件,只是删除整个链接文件,而原有文件保持不变 语法 rm (选项)(参数) ...
- File contains parsing errors: file:///etc/yum.repos.d/docker-ce.repo [line 84]: docker-ce-nightly-source]
错误:File contains parsing errors: file:///etc/yum.repos.d/docker-ce.repo [line 84]: docker-ce-n ...
- 【SpringBoot/MVC】从Oracle下载百万条记录的CSV
工程下载地址:https://files.cnblogs.com/files/xiandedanteng/CsvDownloadOracle20191110-2.rar 画面: 核心代码: 控制器: ...
- PyMouse、PyKeyboard用python操作鼠标和键盘
1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...
- Drawable: getIntrinsicWidth()和getIntrinsicHeight()方法的使用误区
经常会使用上述两个API来获取ImageView中显示图片的大小,但是在某些情况下,这两个API返回的大小可能与原图的大小不一致,比如原图大小是72*72,分别把原图放置在xhdpi,xxhdpi,x ...
- Qt编写自定义控件49-飞机仪表盘
一.前言 飞行仪表是测定和表示飞机数据的工具,飞机中必不可少的一部分,飞行员根据飞行仪表表示的数据才能正确地做出判断.一般飞机仪表包括高度表+空速表+垂直速率表+姿态仪+航向指示表+转弯协调表. 这次 ...
- Mongo查询百万级数据性能问题及JAVA优化问题
Mongo查询百万级数据 使用分页 skip和limit 效率会相当慢 那么怎么解决呢 上代码 全部查询数据也会特别慢 Criteria criteria = new Criteria(); ...