欢迎光临散文网 会员登陆 & 注册

面试题,关于就业考核,项目经验问答的个人猜题问答【诗书画唱】

2021-06-19 22:49 作者:诗书画唱  | 我要投稿

前言:一份试卷,通常会4道vue题目,4道微信小程序题目,3道CSS样式题目,4道JS题目,一般我是优先确保面试题中vue题目,微信小程序,CSS样式题目,JS题目都能做对,其他概念之类的话,至少要能答出很多相关的,很多时候,答案就算和题目关系不大,但也可以答上,但关键的是,关键的答案至少要能答出来一些。当然,能全部答出来是最好的!括号里面的内容可以不答出来,但有些最好能答出来,有些单纯是我的个人注释。

有时会看自己的项目源码,结构,注释,专栏复习,巩固项目经验。看题仔细,少涂改,同时整齐,笔不要太粗。有时不要答得太急了,题目问什么,我看错了,漏看题目问的条件。


记得要回答完,我有时最后一题就是会,但没有回答完。同时项目经验一般会和路由跳转,界面跳转,微信小程序的父子传值有关。有时写得太急了,容易写错。


有时基础内容很久不接触,容易记混,但我认为不影响我做项目。

我常常按这种方法找面试题


目录:

例子1:(5分) 请写出下方代码段的执行结果,并说明原因。(JS)


var s1 = "abc";


vars2=newString(s1);


s1.color = "blue";


s2.color = "red";


console.log( s1===s2, s1.color, s2.color)

例子2:(7分) 用JavaScript实现, 鼠标点击页面中的任意标签,alert该标签的名称。(JS)

例子3:面试题等等常考查内容(自创题):谈谈箭头函数的this指向和外部函数的this的关系

A:箭头函数内部的this和外部函数的this指向同一个对象 。

例子4:关于prosp属性的父子组件传值等方面的2道填空题目,默认选择下拉框,商品列表(和HBuilder中的reactjs中的ReactDOM等有关) 

例子5:关于正则表达式和写出访问路径的题目

以下函数的功能是查询浏览器url中字符串参数,请补全代码(这题是面试题)


function parseQueryString(name) {


    var regexS = "[\\?&]" + name + "=([^&#]*)";


    var regx = new RegExp(regexS);


    var rs = regx.exec(_____________________________);


    if(rs == null) {


        return “”;


    }else{


        return ______________;  


    }


例子6:用JavaScript写一个函数,判断字符串是否是这样组

成的:第一个必须是字母,后面可以是字母、数字、下划线,

总长度为5-20。如果符合条件返回1,否则返回0。

函数原型: function checkString(str)

例子7:可能的面试题:JSON和JSONP有什么关系?

例子8:递归面试题中要补全的代码(含个人的详细解析和理解,递归方法)

例子9:用递归求斐波那契数的第n项(含个人的演算,其实递归就是传入参数有个依次变化的过程)

例子10:用递归实现求和与阶乘

例子11:(15分) 请定义一个函数repeat:(闭包)


function repeat ( func, nums, times ) {


// fill it


}


//函数repeat的调用方法: 


var a = repeat( alert, 6,3000 ) ; 






例子1:(5分) 请写出下方代码段的执行结果,并说明原因。(JS)


var s1 = "abc";


vars2=newString(s1);


s1.color = "blue";


s2.color = "red";


console.log( s1===s2, s1.color, s2.color)


例子1个人答案:false,undefined,red

个人对这题的想法:其实这题理解值类型和引用类型就很容易了:值类型就是赋值一次后就变成固定不可变值,不可重新赋值。引用类型就是可以可变值,可重新赋值。Java中String和js中的object是可以重新赋值的“引用类型”,但在js中string,number,boolean是不可以重新赋值的“值类型”。

如果对象是值类型,你给其添加.color或.name等等属性都是没有用的,控制台打印时,打印出来的是undefined

(可以将使用JSON.stringify(XXX)方法将数组或js对象转换成JSON字符串)


例子2:(7分) 用JavaScript实现, 鼠标点击页面中的任意标签,alert该标签的名称。(JS)

(个人对这题的想法:其实这题用事件冒泡做就很容易。)


搜索所有项目后可以找到我写的代码

例子2个人答案:


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

    

    //写在onload方法中的js代码在html代码执行完成以后再执行

    window.onload = function(){

    

                document.querySelector('body').onclick = function(e){

                alert(e.target.tagName);

                }

   }     

</script>

</head>

<body>

   

<input type="button" value="诗书画唱" />

  

    <div>诗书画唱</div>

   

    <p>诗书画唱</p>

</body>

</html>

例子3:面试题等等常考查内容(自创题):谈谈箭头函数的this指向和外部函数的this的关系

A:箭头函数内部的this和外部函数的this指向同一个对象 。


例子4:关于prosp属性的父子组件传值等方面的2道填空题目,默认选择下拉框,商品列表(和HBuilder中的reactjs中的ReactDOM等有关) 

A1:

selected={this.props.selected}




cityArr.map(o =>(

<MyOption  key={o.id}

            cname={o.name} cid={o.id}   selected={o.name=='湘潭'?'selected':''}/>  )  );



 (<select >{cityItems}</select>)

A2:

<table border="1px">{proData.rows.map(o => (< MyTr  key={o.pname} 

pname={o.pname} price={o.price}  src={o.src} /> ))}</table>


例子5:关于正则表达式和写出访问路径的题目

以下函数的功能是查询浏览器url中字符串参数,请补全代码(这题是面试题)


function parseQueryString(name) {


    var regexS = "[\\?&]" + name + "=([^&#]*)";


    var regx = new RegExp(regexS);


    var rs = regx.exec(_____________________________);


    if(rs == null) {


        return “”;


    }else{


        return ______________;  


    }



A:

'http://localhost:8888/demo?act=admin&pwd=mypwd'


rs[1]



例子6:用JavaScript写一个函数,判断字符串是否是这样组

成的:第一个必须是字母,后面可以是字母、数字、下划线,

总长度为5-20。如果符合条件返回1,否则返回0。

函数原型: function checkString(str)





\w{4,19}$表示4到19长度的以字母下划线为结尾。代码写得越简短越好,不用$就表示不一定是\w结尾


A:

function checkString(str){


                return /^[a-zA-Z]\w{4,19}$/.test(str) ? 1 : 0;


}


例子7:可能的面试题:JSON和JSONP有什么关系?



JSON:JS对象表示法,一种数据传输的格式要求


XML:可扩展标记语言,一种数据传输的格式要求 



例子8:递归面试题中要补全的代码(含个人的详细解析和理解,递归方法)

//递归面试题 START

   function getValue(obj,props){

    //面试题中要补全的代码:

  if(props.length-1==0){return obj[props[0]];}

  else{ 

 

  return getValue(obj[props[0]],props.slice(1))}

  

/*个人解析:

 ['a','p','name']就是props

props.length-1==0表示props为['a']这个长度为1的情况

obj依次会变成

{

            a: {

            p: {

            name: 'Tom'

            }

            }

            };

变成

    a: {

            p: {

            name: 'Tom'

            }

            }

            };

变成

 

    p: {

            name: 'Tom'

            }


props依次变为

 ['a','p','name']

变为

 [''p','name']

变为

 ['name']


最终

if(props.length-1==0){return obj[props[0]];}中

obj[props[0]]变为

   p: {

            name: 'Tom'

            }[ ['name'][0]]





 else中最终表达式执行的最终结果

 包括if或包括else if中写自己要定义的函数的格式的常量可知值表达式就可以 

该题中的getValue(obj[props[0]],props.slice(1))是最终的表达式。

执行最终的表达式,使用(被)赋值法,obj被赋值为obj[props[0]],

"props"(这里我把双引号中的内容表示为会被赋值的可变部分

双引号在这里仅仅是我的标记,方便读者等等看懂我的意思)被赋值为props.slice(1),

最终 if("props".length-1==0)

中"props".length-1的值会为0,return obj[props[0]];这个初始项。


赋值法是我常用于各种方面,比如理解,

运用一些东西的方法,这里的"值"可以代表很多东西。


*/

  

  

}

            var o = {

            a: {

            p: {

            name: 'Tom'

            }

            }

            };

var v = getValue(o,['a','p','name']);

console.log(v);//Tom


/*

 slice() 方法可从已有的数组中返回选定的元素。

 个人总结语法:

arrayObject.slice(start,end)或arrayObject.slice(start)




arrayObject.slice(start):第start到最后一个的数组中的对象的值



arrayObject.slice(start,end):第start到第end-1个的数组中的对象的值



slice:切


var arr = new Array(3)

arr[0] = "George"

arr[1] = "John"

arr[2] = "Thomas"


document.write(arr.slice(1) + "<br />")的结果是John,Thomas


*/





//递归面试题 END




例子9:用递归求斐波那契数的第n项(含个人的演算,其实递归就是传入参数有个依次变化的过程)




//0,1,1,2,3,5



<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<script>


function f(n){



if(n==1){return 0;}

if(n==2){return 1;}

else{

return f(n-1)+f(n-2);

}

}

console.log(f(5))//打印出第n个斐波那契数列的项,这里为3


//0,1,1,2,3

</script>

<body>

</body>

</html>


个人解析演算:

console.log(f(5))的内容会依次变成

 f(4)+f(3);


变成

 f(3)+f(2)+ f(2)+f(1);变成  f(2)+f(1)+f(2)+ f(2)+f(1)=1+0+1+1+0=3



例子10:用递归实现求和与阶乘


//和:

function sum(n){




if(n==1){return 1;}

else{

return sum(n-1)+n;

}

}

console.log(sum(5))


// 阶乘:


function jc(n){




if(n==1){return 1;}

else{

return jc(n-1)*n;

}

}

console.log(jc(5))


例子11:(15分) 请定义一个函数repeat:(闭包)


function repeat ( func, nums, times ) {


// fill it


}


//函数repeat的调用方法: 


var a = repeat( alert, 6,3000 ) ; 



A:


<!DOCTYPE html>


<html>


<head>


<meta charset="UTF-8">


<title></title>


<script>


//func:需要运行的函数


//nums:func函数运行的次数


//times:每次func函数运行的间隔时间(毫秒为单位)


function repeat(func,nums,times){


return function(str){


var iv = setInterval(function(){


func(str);


if(--nums == 0) {


clearInterval(iv);


}


},times);


}


}


var a = repeat(alert,6,2000);


a('你好');


</script>


</head>


<body>


</body>


</html> 




面试题,关于就业考核,项目经验问答的个人猜题问答【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律