2024年Web前端最新项目中遇到的问题(2024(2),2024年最新面试官技巧问题及答案

自学几个月前端,为什么感觉什么都没学到??


这种现象在很多的初学者和自学前端的同学中是比较的常见的。

因为自学走的弯路是比较的多的,会踩很多的坑,学习的过程中是比较的迷茫的。

最重要的是,在学习的过程中,不知道每个部分该学哪些知识点,学到什么程度才算好,学了能做什么。

很多自学的朋友往往都是自己去找资料学习的,资料上有的或许就学到了,资料上没有的或许就没有学到。

这就会给人一个错误的信息就是,我把资料上的学完了,估计也-就差不多的了。

但是真的是这样的吗?非也,因为很多人找的资料就是很基础的。学完了也就是掌握一点基础的东西。分享给你一份前端分析路线,你可以参考。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。

所以学习编程一定要注重实践操作,练习敲代码的时间一定要多余看视频的时间。

时间:2017年11月24日

问题:在destoryed中清掉计时器不起作用

描述:destoryed函数在实例销毁之前调用,在这一步,实例完全可用。

在beforeDestory在实例销毁之后调用,在这一步,实例就不可用了。

项目:《钱隆归来》

时间:2017年11月24日

问题:使用this.timer = null 销毁计时器不管用

描述:在data中定义了this.timer = null ,在使用时用this.tiemr = setTimeout(getStatus, 3000)开启计时器,应该使用clearTimeout 来清掉计时器

关键代码:window.clearTimeout(this.timer)

项目:《招生宝》

时间:2017年11月30日

问题:created方法里让div高度等于屏幕高度,报错cannot read property ‘sytle’ of null

描述:空值的style证明没有获取到dom元素,写在created方法里,created生命周期是将编译好的html模板替换掉el属性,此步是去做渲染这件事,但还没有完成,而在mounted生命周期阶段渲染已经完成,可实时监控dom并更新它,所以获取dom应写在这一步

关键代码:

mounted() {

this.$nextTick(() => {

document.getElementById(‘noOrder’).style.height = window.innerHeight + ‘px’

})

}

项目:《钱隆归来》

时间:2017年11月24日

问题:在destoryed中清掉计时器不起作用

描述:destoryed函数在实例销毁之前调用,在这一步,实例完全可用。

在beforeDestory在实例销毁之后调用,在这一步,实例就不可用了。

项目:《招生宝》

时间:2017年11月29日

问题2:在filters中使用data中定义的属性报错undefined

描述:filters中this为undefined,使用

解决办法:可在filters中定义变量再使用

关键代码:

filters: {

filterBtnTitle(item,args) {

let btnTitle

console.log(args)

if (item.teacherConfirmStatus) {

if (item.paused === 1) {

// 1是暂停,代表学生发起了撤消请求

btnTitle = ‘同意撤消’

}

btnTitle = ‘已确认’

} else {

btnTitle = ‘确认为我的学生’

}

return btnTitle

}

},

项目:《招生宝》

时间:2017年11月29日

问题:使用filters传多个参数,位置互换返回结果错误

描述:使用(item.orderNo, item.paused) | filterBtnTitle方式来传参数错误,filters管道符前边的参数为第一个参数,第二个,第三个参数应该依次在filters方法后边。

{{(item) | filterBtnTitle(item.paused)}}

项目:《招生宝》

时间:2017年12月4日

问题:使用===判断两个对象是否相等,返回false

描述:因为一个是写进数组的对象,一个是在页面中点击产生的对象,对象是引用地址方式,两个不同引用地址比较结果肯定是false

解决办法:通过比较两个对象中的key来判断是否相等。

错误代码::

// 判断指定元素是否在数组中,因为两个数组并不相等,所以一直返回false,但此处复选框没必要去判断元素是否已在数组中,因为点一下添加进数组中,再点一下就删除了

isInArray(arr, value){

for(var i = 0; i < arr.length; i++){

// if(value.orderNo === arr[i].orderNo){

// console.log(11111111);

// return true;

// }

}

return false;

},

项目:《招生宝》

时间:2017年12月4日

问题:先定义一个对象为它赋值,再定义第二个对象等于第一个对象,再为第二个对象赋值,此时打印第一个对象和第二个对象的值是相等的,因为此时两个对象引用同一地址

let obj1=new Object()

obj1.name=‘Frank’

let obj2=obj1

obj2.name=‘Muse’

console.log(obj1.name);

项目:《招生宝》

时间:2017年12月4日

问题:

// 为数组对象增加删除指定元素的方法

removeByValue(arr, val) {

for(var i=0; i<arr.length; i++) {

if(arr[i] === val) {

arr.splice(i, 1);

break;

}

}

},

项目:《招生宝》

时间:2017年12月4日

问题:先判断元素是否在数组中,如果在就删除,我用了上述isInArray,removeByValue两个方法先后来操作,但此处可巧妙运用数组的filters方法,直接返回数组中不等于当前选中元素的那一项,就实现了删除相等的那一项

关键代码:

let arr = arr.filters(item => {

return item.orderNo !== item.orderNo

})

项目:《招生宝》

时间: 2017年12月4日

问题:在switch分支处语法检查报错 Unreachable code no-unreachable

描述: switch return 和break不能一起用

解决办法:将switch返回结果赋值给一个变量,最后再返回这个变量

项目:《招生宝》

时间: 2017年12月4日

问题:请求接口提交数据格式不正确,

描述: 在外边给json赋值后,用的时候又用了{}括起来了,提交数据格式为json时,可以直接用post({key:value}),也可以先赋值再使用

错误代码:

const params ={}

query.then({params}).then().catch()

正确代码:

1.queryOrderList({

uname: keywords

})

2.const params = {}

params.uname = keywords

queryOrderList(params).then().catch()

项目:《招生宝》

时间:2017年12月4日

问题1:移动端字体小于12px时使用line-height字体整体靠上

解决办法: display:tabel默认是垂直居中,使用display: table来实现垂直居中效果并不是特别明显,所以再配合使用缩放来对元素进行缩放,给要垂直居中的元素外再套一层

关键代码:

.wrapper {

display: table,

font-size: 20px;

height: 28px;

line-height: 28px;

width: 72px;

transform: scale(0.5),

// transform-origin 设置旋转元素的基点位置,必须与transform一起使用

transform-origin: 100% 100%

span {

display: tabel-cell;

vertical-align: middle;

}

}

问题2:使用transform:scale可以实现缩放,但还占据着原来的空间,导致元素没有在原本应该的位置上显示

解决办法: 使用zoom: 0.5来进行缩放,还不占据空间,zoom: 设置或检索对象的缩放比例

项目:《招生宝》

时间:2017年12月4日

问题:页面显示数据使用{{btnTitle(item.status, item.no, KaTeX parse error: Expected 'EOF', got '}' at position 7: event)}̲}方法来根据数据显示按钮样式,…event来获得当前对象来改变其背景图,但$event为undefined

描述:此处用来过滤功能的btnTitle方法并不是一个dom方法,所以并不会真实接受$evnet对象

解决办法:在此用一个flag来做标志,如果是特殊样式falg = true,如果不是flag = false,然后当flag= true时添加class名,获取元素方法使用获取元素方法使用refs,给按钮绑定refs

关键代码:

<a class=“confirm-button tac c3e” ref=“btns” @click=“handleClick(item.teacherConfirmStatus, item.paused, item.orderNo)” :class=“{‘confirmed’: isconfirm}” v-show=“buttonShow === ‘all’”>{{filterBtnTitle(item.teacherConfirmStatus, item.paused, item.status,key)}}

let flag = true

if (status = ‘同意撤消’) {

flag = false

}

if (flag) {

this.nextTick(() => {

this.$refs.btns[index].className =‘confirmed’

})

}

项目:《招生宝》

时间:2017年12月6日

问题:正则表达式不起作用

描述:格式错误

正则表达式 let newTime = /\d{4}-\d{1,2}-\d{1,2}/g.exec(time)写成了 let newTime = /\d(4)-\d(1,2)-\d(1,2)/g.exec(time)

newTime[0].replace(/-/g, ‘.’)写成了newTime[0].replace(-\g, ‘.’)

项目:《招生宝》

时间:2017年12月6日

问题:请求mock数据接口时接口状态一直返回失败,

描述:状态码2000000写成了“2000000”

错误代码: {

“path”: “”,

“delay”: 500,

“name”: “”,

“description”: “”,

“isPaging”: false,

“datasource”: “success.data”,

“responseName”: “success”,

“response”: {

“success”: {

“retcode”: “5000000”,

“message”: “获取数据成功”,

“data”: {}

},

“failure”: {

“code”: “201”,

“status”: “FAILURE”,

“message”: “服务异常”

}

}

}

正确代码 :

{

“path”: “”,

“delay”: 500,

“name”: “”,

“description”: “”,

“isPaging”: false,

“datasource”: “success.data”,

“responseName”: “success”,

“response”: {

“success”: {

“retcode”: 5000000,

“message”: “获取数据成功”,

“data”: {}

},

“failure”: {

“code”: 201,

“status”: “FAILURE”,

“message”: “服务异常”

}

}

}

项目:《招生宝》

时间:2017年12月6日

问题:向后台 传参数时需要的是数组,但得到的是json

描述:因为传参数时传的时候用的{}括起来了,而括号里是一个数组,所以是json格式,并不是数组都是这样默认显示的(数组名,数组值),这明显是json格式。

错误代码: confirmBatch(

{batchArr}

).then((res) => {

this.$dialog.alert(res.message)

// window.location.reload()

总结

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

LURE",

“message”: “服务异常”

}

}

}

项目:《招生宝》

时间:2017年12月6日

问题:向后台 传参数时需要的是数组,但得到的是json

描述:因为传参数时传的时候用的{}括起来了,而括号里是一个数组,所以是json格式,并不是数组都是这样默认显示的(数组名,数组值),这明显是json格式。

错误代码: confirmBatch(

{batchArr}

).then((res) => {

this.$dialog.alert(res.message)

// window.location.reload()

总结

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-uDMPc5og-1715471368418)]

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2024前端面试题可能会涉及以下几个方面的内容: 1. HTML/CSS基础知识:包括HTML标签的使用、CSS选择器、盒模型、浮动、定位等基本概念和常见问题。 2. JavaScript基础知识:包括数据类型、变量、运算符、流程控制语句、函数、作用域、闭包等基本概念和常见问题。 3. 前端框架和库:例如React、Vue等,可能会涉及到它们的基本原理、生命周期、组件通信等方面的问题。 4. 前端性能优化:包括减少HTTP请求、压缩和合并文件、使用CDN加速、懒加载、缓存等方面的知识。 5. 前端工程化:包括模块化开发、构建工具(如Webpack)、版本控制(如Git)、自动化测试等方面的知识。 6. 前端安全:包括XSS攻击、CSRF攻击、点击劫持等常见安全问题及其防范措施。 7. 前端跨域问题:包括同源策略、跨域请求的方法(如JSONP、CORS等)以及解决跨域问题的方案。 8. 移动端开发:包括响应式设计、移动端适配、触摸事件、移动端性能优化等方面的知识。 9. Web标准和浏览器兼容性:包括HTML5、CSS3的新特性以及不同浏览器之间的差异和兼容性问题。 10. 数据可视化:包括使用图表库(如Echarts、D3.js)进行数据可视化的基本原理和常见问题。 以上只是一些可能涉及到的内容,具体的面试题目还会根据面试官的要求和公司的需求而有所不同。在准备面试时,建议多做一些实际项目练习,加深对前端知识的理解和应用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值