前端开发面试过程中遇到的编程面试题

  1. 输出下面代码的结果
//代码块1
var a = b = {x: 1};
var a.x = a = {x: 1};
console.log(a); // {x: 1}
console.log(b); // {x: {x: 1}}
// 代码块2
var a=1;
function outer(){
	var a = 2;
	function inner(){
		a++;
		console.log(a);
		var a = 3;
		console.log(a);
	}
	inner()
}
outer()
//代码块3
var x=1;
var Kit = {
	x:2,
	buf: {
		x:3,
		fac: function() {
			return this.x;
		}
	}
}
var kbf = Kit.buf.fac;
console.log(kbf());
console.log(Kit.buf.fac())
//代码块4
function Foo(){
	var i=0;
	return function(){
		console.log(i++)
	}
}
var f1 = Foo(),f2 = Foo();
f1();
f1();
f2();
//代码块5
(function(){
	var a=b=3;
})();
console.log(typeof a);
console.log(typeof b);
//代码块6
function Timer(){
	this.s1 = 0;
	this.s2 = 0;
	setInterval(()=>this.s1++, 1000);
	setInterval(function(){this.s2++;}, 1000);
}
var timer = new Timer();
setTimeout(()=>console.log('s1:', timer.s1), 3100);
setTimeout(()=>console.log('s2:', timer.s2), 3100);
//代码块7
function test(p){
	p.age = 24;
	p = {
		name: 'hhh',
		age: 10
	}
	return p
}
const p1 = {name: 'www', age: 20}
const p2 = test(p1)
console.log(p1);
console.log(p2);
  1. 用js判断一个字符串是否是回文字符串
// 1 使用reverse()方法
// 2 for循环判断
//方法1
function palind1(str) {
	let newStr = str.toLowerCase();
	for(let i=0,len=Math.floor(str.length/2);i<len;i++){
		if(newStr[i] !== newStr[str.length-1-i]) 
			return false
	}
	return true
}
// 方法2
function palind2(str) {
	let newStr = str.toLowerCase();
	let len = str.length;
	for(let i=0,j=len-1;i<j;i++,j--){
		if(newStr[i] !== newStr[j])
			return false
	}
	return true
}
  1. 输出下面代码的结果
var a = 1;
function log(){
	a++;
	console.log(a);
	var a = 2;
	console.log(a)
}
log();
// var 变量提升
// NaN
// 2
  1. 设计一个function, 实现 从数组中删除重复超过2次的元素。
    // 例如 A = [1,1,1,2,2,3],预期 [1,1,2,2,3]
    // 例如 A = [1,2,1,2,1,3,2],预期 [1,2,1,2,3]
function delArr(arr){
  let newArr = [];
  for(var i=0;i<arr.length;i++){
   if(strNum(newArr, arr[i]) < 2){
     newArr.push(arr[i])
    }
  }
  return newArr
}
function strNum(arr, item){
    var index = 0;
    for(var i=0;i<arr.length;i++){
        if(item == arr[i]){
            index += 1;
        }
    }
    return index
}
delArr([1,2,1,2,3,2,1,4,1,5]) //[1,2,1,2,3,4,5]
  1. 未知宽高元素水平垂直居中显示的方法
.cell {
	display: table-cell;
	text-aign: center;
	verticle-ailgn: middle;
} //不存在兼容性问题
.flex {
	display: flex;
	justify-content: center;
	align-items: center;
}
.trans {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}
  1. Array的flat实现方式
//方法1
function transferFlat(arr){
 let newArr = []
 arr.forEach(item => {
	if(Array.isArray(item)){
		newArr = newArr.concat(item.flat())
	}else {
		newArr.push(item)
	}
 })
 return newArr
}
//方法2
function transferFlat(arr){
 return arr.toString().split(',').map(item => +item)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值