亚信科技面试题软件测试(亚信实习前端笔试2023(自用复盘含解析版))
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方法修改子组件的statereact
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/plainoptions请求:预检请求 ,一种探测请求以确定针对某个目标地址的请求必须具有怎样的约束 。
当请求满足下述任一条件时 ,即应首先发送预检请求(使用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);所以最后输出aA. 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的父元素
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!