亚信实习前端笔试2023(自用复盘含解析版)
啥也不会的猪 2024-06-22 15:33:02 阅读 75
1.以下路由代码中,如果现在跳转到“/inbox/messages/3”,浏览器链接栏中显示的路由为```jsx (D)
<Redirect from=“messages/:id” to=“/messages/:id” />
```
A./inbox/messages/3
B.messages/3
C./inbox/messages
D./messages/3
组件用于路由的跳转,即用户访问一个路由,会自动跳转到另一个路由,访问/inbox/messages/3,会自动跳转到/messages/3
2.下列关于scoped的描述错误的是(B)
A.scoped原理是在标签上添加data-v属性,然后使用属性选择器实现样式局部化
B.使用scoped,父组件的样式会渗透到子组件内部的元素
C.使用scoped不会造成全局污染
D.">"可以实现样式穿透
使用scoped后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的scoped css和子组件的scoped css的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式
3.在React中渲染列表应该使用哪种方法?(A)
A.map()
B.reduce()
C.createList()
D.every()
没学react。
map()方法将数组中的每个元素变成标签,最后将得到的标签数组插入父元素即可。
4.关于Vue组件化说法错误的是(B)
A. 所谓组件化,就是把页面拆分成多个组件 (component),每个组件依赖的 CSS、JavaScript、模板、图片等资源放在一起开发和维护
B. 组件是资源独立的,组件在系统内部可复用,但是组件和组件之间不可以嵌套
C. vue的组件之间可以进行通信
D. 组件化能提高开发效率,方便重复使用,简化调试步骤,提升项目可维护性,便于多人协同开发
组件和组件之间可以嵌套
5.下列哪个查找最快?(A)
A.哈希表法(散列表)
B.顺序查找
C.二分查找
D.二叉排序树查找
不太记得哈希表法,但猜对
哈希表法:O(1)
顺序查找:O(n)
二分查找/二叉排序树查找:O(logn)
6.Class内部有一handleClick方法如下代码块,在点击事件中触发handleClick的正确方法是?(A)
handleClick(){ console.log('this.state:',this.state); }
A.onClick={ () => this.handleClick()}
B.onClick={ this.handleClick()}
C.onClick={ this.handleClick}
D.οnclick={ handleClick}
js中,class方法不会绑定this,所以调用时要加this
react绑定事件的方法,没学过不了解
7.执行以下程序,下列选项中,说法正确的是(C)
class Dog{ static dog(){ console.log(this); ...① } bark(){ console.log('狗会叫'); }}var dog = new Dog();
A.①式的this指代类的实例对象
B.调用dog方法,既可以使用Dog.dog(),也可以使用dog.dog()
C.调用bark方法,只能使用dog.bark(),不能使用Dog.bark()
D.在类中,不允许静态方法和非静态方法重名
直接用类调用,只能调用静态。
而且,静态方法只能由类进行调用。
静态方法和非静态方法不会引起歧义,所以可以重名。
8.有如下代码,最终渲染出来的div元素的class属性值是( B )
有如下模板:
<div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>
和如下data:
data: { isActive: true, hasError: false}
A.static isActive
B.static active
C.static hasError
D.isActive
IsActive==true,所以active属性生效
9.下列关于Vue响应式的描述错误的是( C )
A.当利用索引值设置一个数组项时,Vue不能检测到数组的变动
B.当修改数组的长度时,Vue不能检测到数组的变动
C.Vue可以监听对象属性的添加或删除
D.可以通过Vue.set()方法向嵌套对象添加响应式属性
由于 JavaScript 的限制,Vue 不能检测数组和对象的变化,因而对象属性的添加或删除不可以监听到。
10.若有一个顺序有序表A[1:18] 中有18个元素,现进行二分查找,则查找 A[3]的比较序列的下标依次为(D )。
A.1,2,3
B.9,5,2,3
C.9,5,3
D.9,4,2,3
二分法除以2时向下取整。
11.如果想要在组件第一次加载后获取该组件的dom元素,应当在以下哪个生命周期中进行(B)
A.componentDidUpdate()
B.componentDidMount()
C.componentWillUnmount()
D.shouldComponentUpdate()
react生命周期函数,不太了解
12.执行以下程序,当用户在prompt输入框中输入0时,输出结果为(B)
var num = prompt('请输入分母:')try{ console.log('a'); value = 0 / num; console.log('b');}catch(e){ console.log('c');}finally{ console.log('d');}
A.a c d
B.a b d
C.a b c d
D.a b c
在js中,0是可以作分母的,0/0的结果为NaN,并不会抛出异常。
不管有没有异常,finally都会执行。
13.下面是对refs使用不合适的是(D)
A.集成第三方DOM库
B.触发强制动画
C.管理焦点,文本选择或媒体播放
D.获取子组件的实例,直接通过子组件的setstate方法修改子组件的state
react
14.关于以下 URL的描述错误的是(A )
A.http表明使用TCP协议
B.又名统一资源定位符,方便确定一个资源,并表示出它在哪里
C.URL中隐藏了端口号,默认是80端口
D.访问URL可使用大写字母
http只能表明使用了HTTP协议,默认80端口
15.下列不属于Vue的特点的是( D)?
A.Vue.js的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进DOM的系统
B.实现了双向数据绑定
C.Vue.js可以进行组件化开发,使代码编写量大大减少,读者更加易于理解D.Vue虽然也提供了渲染函数,默认使用模板渲染,且不支持JSX
支持JSX
16.关于Vue组件的生命周期说法错误的是(C )
A.mounted钩子函数中,可以直接获取DOM元素
B.beforeMount钩子函数中,不可以直接获取DOM元素
C.beforeDestroy钩子函数中,不可以直接获取DOM元素
D.destroyed钩子函数中,不可以直接获取DOM元素
beforeDestroy还没销毁,可以获取
17.现有以下代码, 打印的结果是( A )
new Vue({ data: { a: 'first', b: 'second' }, created: function () { console.log(this.a) }, mounted(){ console.log(this.b) }})
A.‘first’
B.‘first’ ‘second’
C.undefined undefined
D.空
只创建了还没挂载,所以mounted不执行
如果写了el:'app’就挂载了
18.执行以下程序后,x的值为(A)
var x=0;switch(++x){ case :++x; case 1:++X; case 2:++x;}
A.3
B.4
C.2
D.1
19.下列关于客户端渲染和服务器端渲染的描述错误的是(D )
A.服务器端渲染有利于SEO,且首页加载快
B.客户端渲染节省后端资源,但可能会加载慢出现白屏
C.服务器端渲染耗费流量,局部页面的变化也需要重新请求完整的页面
D.客户端和服务器端在首屏渲染上网络请求次数是一样的
服务器端只请求一次
客户端先拿到空的html模板,之后再发起数据请求
20.关于keep-alive说法错误的是(D )
A.keep-alive可以通过include属性,匹配要进行缓存的组件
B.当组件在keep-alive内被切换,它的activated和deactivated这两个生命周期钩子函数将会被对应执行
C.keep-alive自身不会渲染为一个 DOM 元素,也不会出现在组件的父组件链中
D.max属性控制最多可以缓存多少组件实例。一旦这个数字达到了,新创建的实例则不能再进行缓存
最久没访问的实例会被销毁,新创建的可以缓存
21.要在下面代码中组件的props上进行类型检查,可以使用(C)
import PropTypes from 'prop-types'; class Greeting extends React.Component { render() { return ( <h1>Hello, { this.props.name}</h1> ); } }
A.Greeting.propType = {name: PropTypes.string};
B.Greeting.propsType = {name: PropTypes.string};
C.Greeting.propTypes = {name: PropTypes.string};
D.Greeting.proptypes = {name: PropTypes.string};
没看懂
22.下列关于vue-lazyload的描述错误的是( B )
A.组件中使用vue-lazyload时,v-lazy代替v-bind:src
B.组件中使用vue-lazyload时,必须要加:key属性
C.vue-lazyload指令可以实现图片的懒加载
D.使用vue-lazyload时,扩展功能api中的attempt代表尝试加载图片数量
可以不加:key,但可能会出问题,比如刷新页面时由于key相同,图片不刷新。
23.以下不是vue内置指令的是(D )
A.v-html
B.v-on
C.v-for
D.v-hidden
没见过v-hidden
24.下列关于Vue的描述错误的是( B )
A.当给某个组件修改某个值时,该组件不会立即重新渲染
B.Vue内部使用原生Promise.then、MutationObserver和setImmediate实现异步队列,不会采用setTimeout(fn, 0)
C.$nextTick()返回一个Promise对象
D.$nextTick()可以配合async/await使用
Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmediate,如果执行环境不支持,则会采用 setTimeout(fn, 0) 代替
没看懂。
25.关于Animation-timing-function下列说法正确的是? (B)
A.linear是默认动画,动画从头到尾的速度是相同的
B.ease是默认动画,动画以低速开始,然后加快,在结束前变慢
C.cubic-bezier(n, n, n, n),在cubic-bezier 函数中自己的值。可能的值是从0到100的数值
D.ease-in动画以低速结束
A.默认不是linear,是ease
C.可能的值是0-1
D.动画以低速开始
26.对于下列二叉树,进行前序遍历的结果为(C)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HnO7t2eF-1681053819003)(亚信web.assets/102_1412686818517_图片1.png)]
A. DYBEAFCZX
B. YDEBFZXCA
C. ABDYECFXZ
D. ABCDEFXYZ
前序遍历:根、左、右
27.下列关于v-for说法错误的是( C)
A.v-for指令基于一个数组来渲染一个列表
B.v-for指令需要使用item in items形式的特殊语法,其中items是源数据数组,而item则是被迭代的数组元素的别名
C.不可以用v-for来遍历一个对象的property
D.v-for在使用的时候最好添加key,且key最好不是索引
可以用v-for来遍历一个对象的property(属性)
28.下列content-type那个在post跨域请求时会发出options请求(B)
A.application/x-www-form-urlencoded
B.application/json
C.multipart/form-data
D.text/plain
options请求:预检请求,一种探测请求以确定针对某个目标地址的请求必须具有怎样的约束。
当请求满足下述任一条件时,即应首先发送预检请求(使用OPTIONS)
1、使用了下面任一 HTTP 方法:
PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH
2、人为设置了对 CORS 安全的首部字段集合之外的其他首部字段。该集合为:
Accept
Accept-Language
Content-Language
Content-Type (but note the additional requirements below)
DPR
Downlink
Save-Data
Viewport-Width
Width
3、Content-Type 的值不属于下列之一:
application/x-www-form-urlencoded
multipart/form-data
text/plain
29.以下关于ReactDOM.render说法错误的是 (B)
A.ReactDOM.render() 会控制你传入容器节点里的内容
B.ReactDOM.render() 会修改容器节点以及其子节点
C.ReactDOM.render() 目前会返回对根组件 ReactComponent 实例的引用
D.使用 ReactDOM.render() 对服务端渲染容器进行 hydrate 操作的方式已经被废弃,并且会在 React 17 被移除
react 不太懂
ReactDOM.render() 不会修改容器节点(只会修改容器的子节点)。可以在不覆盖现有子节点的情况下,将组件插入已有的 DOM 节点中。
30.问题:span标签的width和height分别为多少? (D)
<div style=”width:400px;height:200px;”> <span style=”float:left;width:auto;height:100%;”> <i style=”position:absolute;float:left;width:100px;height:50px;”>hello</i> </span></div>
A.width = 0px,height = 0px
B.width = 400px,height = 200px
C.width = 100px,height = 50px
D.width = 0px,height = 200px
span不是块级元素,不支持宽高,但是float:left使得span变成块级元素支持宽高。
height:100%----和父级元素相同。width:auto—宽度由内容撑开
i标签使用的是绝对定位,脱离了文档流,不再占父级空间,所以无法撑开父级。
31.关于下列CSS选择器:ID选择器、类选择器、伪类选择器、标签名称选择器,排序正确的是:(B)
A.ID选择器> class 选择器>伪类>标签名称选择器
B.ID 选择器> class 选择器=伪类>标签名称选择器
C.ID选择器>伪类> class 选择器>标签名称选择器
D.ID 选择器> class 选择器>伪类=标签名称选择器
32.请按顺序选择正确的代码,实现图片预加载功能( C)
<template> <div> <div> <h1><strong>Loading...</strong></h1> <h2><strong>{ {percent}}%</strong></h2> </div> </div></template><script>export default { data() { return { count: 0, percent: '', images: [ 'example.png', '...', '...' ] } }, mounted() { __1__() }, methods: { preload: function() { for (let url __2__ this.images) { let image = new Image() image.src = url image.__3__ = () => { this.count++ this.percent = Math.floor(this.count / this.images.length * 100) } } }, }, watch: { __4__: function(num) { if (num === this.images.length) { this.$router.push({path: 'home'}) } } }}</script>
A.onload、of、this.preload、count
B.this.preload、in、onload、percent
C.this.preload、of、onload、count
D.onload、in、this.preload、percent
挂载时,调用preload方法,使用of获取数组每项,图片加载成功时触发onload事件,观察count,当count等于数组长度时,代表全部加载完毕,进行跳转。
for…in 语句以原始插入顺序迭代对象的可枚举属性(只能迭代出可枚举的属性)。—拿到的是下标
for…of 语句遍历可迭代对象定义要迭代的数据(非自定义属性)。—拿到的是值
33.有如下 CSS 代码
div { margin-top: 20px; margin-right: 30px; margin-bottom: 40px; margin-left: 50px;}
请问下列选项与该 div 实现了相同效果的是:(A )
A.div{margin: 20px 30px 40px 50px};
B.div{margin: 20px 50px 40px 30px};
C.div{margin: 20px 40px 50px 30px};
D.div{margin: 20px 40px 30px 50px}.
上,右,下,左,顺时针
34.关于Vue组件化说法错误的是( B )
A.所谓组件化,就是把页面拆分成多个组件 (component),每个组件依赖的 CSS、JavaScript、模板、图片等资源放在一起开发和维护
B.组件是资源独立的,组件在系统内部可复用,但是组件和组件之间不可以嵌套
C.vue的组件之间可以进行通信
D.组件化能提高开发效率,方便重复使用,简化调试步骤,提升项目可维护性,便于多人协同开发
组件是资源独立的,组件在系统内部可复用,而且组件和组件之间可以嵌套
35.以下序列(9,7,3,5)构造的Haffman树带权路径长度为( C)
A. 45
B. 46
C. 47
D. 48
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9KTiLJQ-1681053828563)(null)]
36. 一般包含什么?©
A.头部区域
B.侧边栏
C.文章主题部分
D.底部内容
主体内容
37.执行以下程序,输出结果为(A)
var str = 'acdaecad';var obj = { };for (var i = 0;i<str.length;i++){ if (obj[str.charAt(i)]){ //判断是obj里是否有str里面某个字母的属性 obj[str.charAt(i)]++;//如果有,给那个属性++ } else { obj[str.charAt(i)] = 1; //如果没有,给obj添加那个属性}}var val1;var val2 = 0;for (var k in obj) { //for in 循环遍历对象,k是键(也就是对象的属性名) obj就是原对象 if (obj[k] > val2){ 如果obj的属性值大于val2 里面a出现的最多。++次数最多,也就是3 val2 = obj[k]; //val2等于obj的属性值 val1 = k; //最后将属性名赋予 }}console.log(val1);所以最后输出a
A. a
B.3
C.e
D.1
程序一开始先把字符串str的单个字符作为对象obj的属性,属性值为单个字符在字符串str中的个数,即obj = {a: 3, c: 2, d: 2, e: 1},然后开始遍历对象obj,找出对象obj属性值最大的属性名,因此最终val1结果为属性a,val2为该属性对应的属性值3,该程序的执行效果即为找出字符串str中同一元素出现个数最多的字符以及对应的个数
38.以下选项中不可以进行路由跳转的是( A )
A.this.$router.jump()
B.route-link
C.this.$router.push()
D.this.$router.replace()
B:声明式导航
C、D:编程式导航
route-link、this. r o u t e r . p u s h ( ) 、 t h i s . router.push()、this. router.push()、this.router.replace()、this.$router.go()等
39.以下哪项对react-router-dom中组件分类是错误的(D)
A.路由器组件: BrowserRouter和HashRouter
B.导航组件: Link和NavLink
C.路由匹配组件: Route和Switch
D.导航组件: Route和Switch
又是react
在react-router-dom中通常使用的组件有三种路由器组件: 如BrowserRouter和HashRouter
路由匹配组件: Route和Switch 组件
导航组件: Link和NavLink 组件
40.下列有关定位说法错误的是(A)
A.absolute 可以基于 static 定位
B.fixed 固定悬浮在视口内
C.若无显示说明,定位 positon 不会继承到子元素
D.relative 相对于其正常位置进行定位
absoulte的定义是基于非static的父元素
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。