校招笔试题2

                                        一.深圳市小橙堡文化传播有限公司

1.叙述一个HTTP事物的过程:

https://www.cnblogs.com/LIUYANZUO/p/5428185.html

总结为:

        域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。

2.面向对象:

https://www.cnblogs.com/chiangchou/p/js-oop1.html

3.正则验证邮箱:

/^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g

开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-。然后是点“.”和单词字符和-的组合,可以有一个或者多个组合。

<script type="text/javascript"> 
function isEmail(str){ 
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; 
return reg.test(str); 
} 
var str = '[email protected]'; 
document.write(isEmail(str)+'<br />'); 
var str2 = '[email protected]'; 
document.write(isEmail(str2)+'<br />'); 
var str3 = '[email protected]'; 
document.write(isEmail(str3)+'<br />'); 
var str4 = '[email protected]'; 
document.write(isEmail(str4)+'<br />'); 
var str5 = '[email protected]'; 
document.write(isEmail(str5)+'<br />'); 
</script>

4.解释一下json:

1.json和Math一样,是一个js对象,同时json也是一种格式。

2.json提供两种API:

var a = JSON.stringify({a:10, b:20});   //转换为字符串
console.log(a);   //"{'a':10, 'b':20}"
var b = JSON.parse('{"a":10, "b":20}');    //转换为对象
console.log(b);   //{a:10, b:20}

5.null undefined undeclared:

1.null表示"没有对象",即该处不应该有值,转为数值时为0。典型用法是:

(1) 作为函数的参数,表示该函数的参数不是对象。

(2) 作为对象原型链的终点。

2.undefined表示"缺少值",就是此处应该有一个值,但是还没有定义,转为数值时为NaN。典型用法是:

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

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

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

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

3.undeclared:js语法错误,没有申明直接使用,js无法找到对应的上下文。

区分的代码:

const typeTest = val => {
    typeof(val) === 'object' && console.log('null');
    typeof(val) === 'undefined' && console.log('undefined');
}

try {
    typeTest(null);
    typeTest(undefined);
    typeTest(a);
} catch(e) {
    console.log(`undeclared : ${e}`)
}

6.元素水平垂直居中:

大概五六种:https://blog.csdn.net/yhbsww0523/article/details/78642043

                                                        二.上海爱数信息技术

1.对一个11位的手机号,中间五位输出五个*号。如输入:12345678987,输出:123*****987。

	<script type="text/javascript">
		function change(num){
			var a = String(num).split("");
			a.splice(3,5,"*","*","*","*","*");
			return a.join("");
		}
		console.log(change(18845693838));
	</script>

2.输入一个数组,求数组每个数的和,如输入[1,2,3,4,5]。

	<script type="text/javascript">
		function total(arr){
			var len = arr.length;
			var a = [];
			for(var i=0; i<len-1; i++){
				for(var j=i+1; j<len; j++){
					var one = arr[i]+arr[j];
					a.push(one);
				}
			}
			return a;
		}
		console.log(total([1,2,3,4,5]));
	</script>

3.一个map(arr,callback)函数,实现将arr这个数组作为参数传给callback这个函数。

	<script type="text/javascript">
		function map(arr,callback){
			return callback.call(null,arr);
		}
		map([1,2,4,5,9,4],function(a){
			var max = Math.max.apply(null,a);
			console.log(max);  //9
		})
	</script>

                                                                       三.顺丰同城科技

1.实现一个方法,将多重数组转换为一维数组。如["a",["b","c"],"d"]转换为["a","b","c","d"]。

方法一:

	<script type="text/javascript">
		function fon(arr){
			var a = (arr + "").split(",");
			return a;
		}
		var arr = ["a",["b","c",["d","e"]],"f"];
		var arr2 = [1,2,[3,4],"d","e"];
		console.log(fon(arr));      //["a", "b", "c", "d", "e", "f"]
		console.log(fon(arr2));    // ["1", "2", "3", "4", "d", "e"]
	</script>

方法二:

巧用JS的apply()和map()函数,这种方法跟第一种方法相似,优点是使用范围更广,比如对数字的处理。

	<script type="text/javascript">
		function fon(arr){
			var a = (arr + "").split(",");
			var a1 = a.map(function(item){
				return Number(item) ? Number(item) : item;
			})
			return a1;
		}
		var arr = ["a",["b","c",["d","e"]],"f"];
		var arr2 = [1,2,[3,4],"d","e"];
		console.log(fon(arr));      //["a", "b", "c", "d", "e", "f"]
		console.log(fon(arr2));    //  [1, 2, 3, 4, "d", "e"]
	</script>

2.画出下面代码在浏览器显示的图:

	<style type="text/css">
		#box {
			width: 100px;
			height: 100px;
			display: flex;
			flex-direction: row;
			border: 1px solid red;
		}
		.item1 {
			width: 20px;
			background-color: red
		}
		.item2 {
			width: 60px;
			display: flex;
			flex-direction: column;
			flex-grow: 1;
		}
		.item2-1 {
			height: 5px;
			background-color: yellow;
		}
		.item2-2 {
			flex-grow: 1;
			background-color: green;
		}
	</style>
</head>
<body>
	<div id="box">
		<div class="item1"></div>
		<div class="item2">
			<div class="item2-1"></div>
			<div class="item2-2"></div>
		</div>
	</div>
</body>

结果:

猜你喜欢

转载自blog.csdn.net/sinat_40697723/article/details/82668341