育碧Web实习笔试题分享

育碧的Web实习笔试题分享

笔试题目一共有20道,主要有选择题,简答题以及编程题,但是大部分都是简答题,题干是全英语的,但是大致题意还是能够读懂。考查知识大体涉及JavaScript、HTTP、CSS、MySQL等。

题目:

1.js里面=,== ,===的区别?(简答)

=:赋值
= = :判断两个数是否相等
= = =:用来检测两个操作数是否严格相等
其中 = = 是用于一般比较, 但是 = = =是用于严格比较,==在比较的时候可以转换数据类型,而 === 是严格比较,只要类型不匹配就返回flase

补充:

“===”首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换
1、如果两个值类型不相同,则它们不相等。
2、如果两个值都是null或者都是undefined,则它们不相等。
3、如果两个值都是布尔值true或false,则它们相等。
4、如果其中一个值是NaN,或者两个两个值都是NaN,则它们不相等。NaN和其他任何值都是不相等的,包括它本身!所以通过x!==x来判断x是否为NaN,只有在x为NaN的时候,这个表达式的值才为true。
5、如果两个值为数字,且数值相等,则它们相等。如果一个为0,另一个为-0,则它们同样相等。
6、如果两个引用值同一个对象、数组或函数,则它们是相等的。如果指向不同的对象,则它们是不等的。尽管两个对象具有完全一样的属性。

举例说明:
1.“1” == true类型不同,"=="将先做类型转换,把true转换为1,即为 “1” == 1;此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1。
如果比较:“1” === true 左侧为字符型,右侧为bool布尔型或int数值型,左右两侧类型不同,结果为false;
2.如果比较: 1 === 1 左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true; 1 === 2 左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false。

2.js里面undefined和null区别?
一个没有被赋值的变量的类型是undefined,如果方法或者是语句中操作的变量没有被赋值,则会返回undefined。
null值表示一个指向不存在或无效的对象或地址引用,可以通过将变量的值设置为 null 来清空变量。

补充:
(1)变量被声明了,但没有赋值时,就等于undefined。

(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。

(3)对象没有赋值的属性,该属性的值为undefined。

(4)函数没有返回值时,默认返回undefined。

(5)null == undefined 返回true

(6)null === undefined 返回false (值相同,但类型不同)

3.js脚本有哪一个引擎执行(js由什么执行)?(选择题,其他选择忘记了)
A. JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器中,用于解析和执行JavaScript脚本 对
B. Web Server 错
补充:
js引擎就是能够读懂JavaScript代码,并准确地给出代码运行结果的一段程序。对于静态语言(Java、C++、C),处理上述事情的叫编译器,相应地对于JavaScript这样的动态语言则叫做解释器。区别:编译器是将源代码编译为另外一种代码(比如机器码或者字节码),而解释器是直接解析并将代码运行结果输出,比如firebug的console就是一个JavaScript解释器。
V8引擎,为了提高JS的运行性能,在运行之前会将JS编译为本地的机器码,然后再去执行机器码。底层采用C/C++编写。

4.json的正确格式?(选择题)
A. {
“name”: “pitt”
“age”: 10
}
B. {
name: “pitt”
age: 10
}
C. [
name: “pitt”
age: 10
]
正确答案:A

5.写出下面代码的结果?

var a1=[1,2];
var a2=a1;
a1[0]=a2[1];
a2.push(3);
console.log(a1);
console.log(a2) ;

结果:
2,2,3
2,2,3

补充:
ECMAScript中所有函数的参数都是按值传递的,所有函数的参数都是按值传递的,也就是说把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。
js的参数传递:https://zhuanlan.zhihu.com/p/40261600

补充

6.什么是版本控制?(简单题)
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

补充:
Git 属于分布式版本控制系统,而 SVN 属于集中式。
集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。
集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。
集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。
分布式版本控制新建分支、合并分支操作速度非常快,而集中式版本控制新建一个分支相当于复制一份完整代码。

7.MySQL里面FLOAT、DOUBLE、DECIMAL区别?(简答题)
float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;
MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
FLOAT和DOUBLE在不指 定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

转至MySQL类型float double decimal的区别 :https://www.cnblogs.com/gulibao/p/5416245.html

8.What is the good code? (简答题)
我就简单答了算法巧妙正确,便于扩展,便于移植,书写规范好阅读(有合适的注释)。

9.On executing the DELETE statement in MySQL ,I keep getting the error about ‘foreign key constraint failing’,What do I do? (简答题)
(在MySQL中执行DELETE语句时,我不断得到“外键约束失败”的错误,怎么办?)

1.禁用外键约束:SETFOREIGN_KEY_CHECKS=0;
2.然后再删除数据
3.启动外键约束:SETFOREIGN_KEY_CHECKS=1;

查看当前FOREIGN_KEY_CHECKS的值,可用如下命令:
SELECT @@FOREIGN_KEY_CHECKS;

10.How would you write a sql query to select all teams that won 2,4,6,8 games?
(写出查询表teamresults,满足赢得2、4、6、8场比赛的球队信息)
表名为teamresults,表结构如下

id
team_name
game_won

查询:
SELECT * FROM tablename WHERE game_won IN (2,4,6,8)

11.What does the query means:(下面sql语句的作用?)
SELECT user_name user_ip FROM users LEFT JOIN ip USING(user_id)

做连接查询:
USING等价于JOIN 操作中的ON,ip表和users表根据user_id字段关联,那么以下等价
SELECT user_name user_ip FROM users LEFT JOIN ON ip.user_id=users.user_id

查询表users的user_name、user_ip字段连接ip表的字段

12.The structure of the table buyers is as follows
在这里插入图片描述
The values of user_pri_id in the last row is 2345. If we delete all rows and insert a new row then :
What is the starting value for this auto incremented feild user_pri_id ?
(大致意思就是:最后一行中的user_pri_id的值是2345。如果删除所有行并插入新行,那么这个自增user_pri_id的初始值是多少?)

结果:2456

在删除全部行后插入新行ID如何再从1开始 使用 truncate table tablename
使用delete,表上索引占用空间不会变;
使用truncate table tablename,表与表上索引的空间占用均回到建立索引或表时的initial参数。

13.同步提交代码到版本控制系统中的步骤?(简答)

考虑git的提交步骤

14.表单提交数据时GET和POST的区别?

1.GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
2.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
3.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
4.get安全性非常低,post安全性较高。

15.Cookie,LocalStorage ,SessionStorage是什么及区别?

Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带上,用于告知服务端两个请求是否来自同一浏览器。由于之后每次请求都会需要携带 Cookie 数据,因此会带来额外的性能开销(尤其是在移动环境下)。
SessionStorage 针对一个 session 的数据存储,当用户关闭浏览器窗口后,数据会被删除。
LocalStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。

HTML5 提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。

16.HTTP请求状态码有哪些及代表意义?

100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。

200 OK

301 Moved Permanently :永久性重定向
302 Found :临时性重定向

400 Bad Request :请求报文中存在语法错误。
401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。
403 Forbidden :请求被拒绝。
404 Not Found

500 Internal Server Error :服务器正在执行请求时发生错误。
503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

17.写出程序展示下面的效果:(杨辉三角)

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1 
1 5 10 10 5 1

代码:

	public static void main(String[] args) {		
		int row = 6;
		for (int i = 1; i <= row; i++) {		
			for (int j = 1; j <= i; j++) { 				
				System.out.print(num(i, j) + " ");
			}
			System.out.println();
		}
	}
	public static int num(int x, int y) {
		if (y == 1 || y == x) {//判断是否到达边界,边界返回1
			return 1;
		}
		int c = num(x - 1, y - 1) + num(x - 1, y);
		return c;
	}			

18.实现大整数相加,有两个很大很大的数,以至于不能用整形数据表示,只能用字符串来表示,假如d1=3141426709752318,d2=3141426709752318,求解相加结果。

思路:
第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置。之所以倒序存储,更加符合我们从左到右访问数组的习惯。

第二步,创建结果数组,结果数组的最大长度是较大整数的位数+1,原因很明显。

第三步,遍历两个数组,从左到右按照对应下标把元素两两相加,就像小学生计算竖式一样。

	public static void main(String[] args) {		
		String d1="3141426709752318";
		String d2="231426709734985";
		String res=getNumberSum(d1, d2);		
		System.out.println(res);
	}
	public static String getNumberSum(String bigNumberA, String bigNumberB) {
		//两个大整数字符串用数组逆序存储,数组长度等于较大整数位数+1
		int maxLength = bigNumberA.length() > bigNumberB.length() ? bigNumberA.length() : bigNumberB.length();
		int[] arrayA = new int[maxLength + 1];
		for (int i = 0; i < bigNumberA.length(); i++) {
			arrayA[i] = bigNumberA.charAt(bigNumberA.length() - 1 - i) - '0';
		}
		int[] arrayB = new int[maxLength + 1];
		for (int i = 0; i < bigNumberB.length(); i++) {
			arrayB[i] = bigNumberB.charAt(bigNumberB.length() - 1 - i) - '0';
		}
		// 构建result数组,数组长度等于较大整数位数+1
		int[] result = new int[maxLength + 1];
		// 遍历数组,按位相加
		for (int i = 0; i < result.length; i++) {
			int temp = result[i];
			temp += arrayA[i];
			temp += arrayB[i];
			// 判断是否进位
			if (temp >= 10) {
				temp = temp - 10;
				result[i + 1] = 1;
			}
			result[i] = temp;
		}
		// 把result数组再次逆序并转成String
		StringBuilder sb = new StringBuilder();
		// 是否找到大整数的最高有效位
		boolean findFirst = false;
		for (int i = result.length - 1; i >= 0; i--) {
			if (!findFirst) {
				if (result[i] == 0) {
					continue;
				}
				findFirst = true;
			}
			sb.append(result[i]);
		}
		return sb.toString();
	}

19.There are 10,000,000 integers,all of them are random from 0 to 100, Please write a function to calculate the occurrence times of each of the random numbers?
(假如一个数组里面一共10000000个数,它们都是从0到100的随机值,请写一个函数来计算每个随机数的出现次数)

思路:计数排序

public static void main(String[] args) {

		int nums10000000[]=new int [10000000];
		//假如这10000000被填充了值了。
		int []res=countSort(nums10000000);
	}
	//0-100
	public static int[] countSort(int[] array) {
		// 1.得到数列的最大值
		int max =100;		
		// 2.根据数列最大值确定统计数组的长度
		int[] countArray = new int[max + 1];//101
		// 3.遍历数列,填充统计数组
		for (int i = 0; i < array.length; i++) {
			countArray[array[i]]++;
		}
		// 4.遍历统计数组,输出结果
		int index = 0;
		int[] sortedArray = new int[array.length];
		for (int i = 0; i < countArray.length; i++) {
			for (int j = 0; j < countArray[i]; j++) {
				sortedArray[index++] = i;
			}
		}
		return sortedArray;
	}

20.时间不够,暂时没有看到题目。

欢迎大家补充以及修正错误!

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值