一.深圳市小橙堡文化传播有限公司
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>
结果: