2024前端面试题分享

打印 上一主题 下一主题

主题 650|帖子 650|积分 1950

媒介

近来忙着面试好久没有更新文章了,分享一下我网络的前端面经,当然标题仅供参考(乞求秋招offer)

面试题

   响应式布局     ---根据用户的的窗口变化而变化的布局方式
react 的hooks    ---官方提供的钩子和自定义的钩子,用来处理处罚状态变化,视图更新,和逻辑复用
useMome 和useCallBack    ---没有了解
性能优化(懒加载,缓存,压缩)    ---镌汰网络请求,利用浏览器缓存,减小打包的体积,利用动态路由
webpack打包控制        ---设置打包的文件名,和被打包的文件类型,清除不必要打包的文件、文件夹,转换js的规范
无感刷新 token 的意义    ---利用双token,当主token失效后,刷新token代替请求,用户就不必要重新验证身份,
url输入到浏览器发生了什么    ---会检查本地的dns表查找ip,没有找到则向dns服务器发送请求获取ip,访问到ip后拿到页面数据,开始按html,link,script的次序渲染页面;这里包罗了异步处理处罚,则会被塞到异队伍列中等待同步任务处理处罚完后实行异步操作
  web Woker(继承一个脚本文件,背景利用线程处理处罚,不影响主线程,通过消息事故<message>传递信息)
Webpack为什么打包、进行压缩之后,性能就会进步呢      ---低落了代码的体积,去除了模块化,页面请求的数据变少了,获取脚本的速度变快了
为什么利用webpack        ---webpack可以优化web的体积和性能,打包时可以设置文件指纹,包管页面的及时更新,打包后的代码被肴杂处理处罚,不便阅读反解,掩护代码的版权
对原始值的拆包和解包    ---没有了解
For of和For in的区别    ---for of是迭代对象遍历值的语法糖,基于symbol.iterator属性实现的,for in 是遍历引用类型的属性,从而遍历整个对象的
判断数据类型的方法        ---根本数据类型利用 type of ,引用数据类型利用 instanceof ,要注意的点typeof null 是Object,instanceof是判断原型链上的对象是否存在,数组可以利用Array.isArray来判断,它的原理是将值利用tostring方法和 [array object]对比
深拷贝、浅拷贝 子标题:JSON.parse( JSON.stringify(arr))在深拷贝时有哪些必要注意    ---当对象有undefined和null属性值大概数组内有空数组时,json序列化会排撤除这些空值
数组的常用静态方法和实例方法?     ---Array.isArray,Array.from,push,pop,map,filter,splice
 子标题:①哪些方法会修改原数组、哪些不会?     ---push,pop,splice会改变,map不会改变原数组,但是内部的回调会改变
②数组Pop方法的返回值    ---数组被删除的第一个元素
③利用哪些数组方法可以实现浅拷贝    ---map
④slice()第二个参数为-1是什么意思    ---裁剪到数组的倒数1位,
⑤splice()有什么用        ---可以实现数组的插入,删除
对Promise的理解?Promise规范有了解吗?Promise的缺点      ---promise时异步处理处罚的解决方法,它可以将异步的方法生存起来,利用回调的方式处理处罚异步结果; ;promise对于多次异步的处理处罚会产生大量回调,代码不易维护
子标题:①有哪些静态方法和原型方法②catch方法之后还可以进行链式调用吗     ---实例方法then,catch ,静态方法,all;可以catch方法相称于只处理处罚reject状态的回调,任然会返回一个promise
请求头content-type的类型有哪些    ---html 、image、json
子组件和父组件加载次序    ---同步先于异步,父组件先于子组件,
事故修饰符.sync    ---没有了解,字面意思应该是一个异步事故,推后实行
Vue2中Computed计算属性的特性以及实现原理        ---可以设置值,拦截访问,getter和setter处理处罚
console.log(null == undefined) // true
console.log(true == 2) // false
console.log(null == 0) // false
console.log(1 == '1') // true
  function test(age) {
    console.log(age);
    var age = 20;
    console.log(age);
    function age() {
      }
    console.log(age);
}
// 参数function , 20 ,20 ;函数优先会被提到最前面,var将age重新赋值,和传入的age无关
 flex 1和 flex auto的区别 ?    ---flex 1是 1 1 0,flex auto是 1 1 auto auto的伸缩会将剩下的空间全部取走
http2 和 http1.1的区别?    ---不清楚,没有深入了解
说一下浏览器缓存        ---浏览器会生存首次的网络请求资源,对于后续的同名文件和请求,会将生存的资源返回,比如,随机的api请求,多次请求返回的是同一组数据
说一下跨域怎么处理处罚的 ?jsonp说一下原理     ---利用本地服务器署理请求,在返回给页面,
继续方法有哪些    ---class,prototype,类和原型
解决跨域的方式有哪些    ---cors,jsonp
react router有哪些常用的路由模式?    ---BrowserRouter 和 HashHistory, ‘/’和‘#’
讲一下扩展运算符的利用,长处是什么,set解构和map解构         ---简化属性的提取,set和map利用数组的布局方式布局
set是否支持forEach循环    --- 支持set的原型上有foreach方法
说一下对ajax的了解,基于什么去实现的,有什么样的一个功能    ---基于xmlhttprequest,可以获取后端传递的json数据,异步不壅闭主历程,而且不会触发页面的整体变化
ajax跟fetch应用上有什么区别,什么时候用ajax,什么时候会用fetch    ---ajax基于xmlhttprequest只能在浏览器中利用,fetch是支持浏览器和node
说一下了解的webpack,输入输出和构建流程    ---在webpack.config.js文件中设置打包规则,包括,指定文件夹,文件类型,打包的es6语法转换,
webpack构建好的产物都是什么?你是如何部署的?前端平台的部署是一个什么流程?     ---一个主要的html,和其他的js脚本css样式文件,以及静态资源,将打包好的dist文件夹中的文件部署到github的分支,在将这个分支用github的静态page功能部署,临时没有用过平台部署
github给你分配了一个链接,这个链接是如何署理到你打包好的前端资源上的?     ---这个链接会和存放资源的服务器ip构成一个dns表,而打包 好的资源就存放在服务器上
webpack热更新实现原理
react组件通讯的方式有哪些    ---props透传,useContext深层传递的钩子
说一下react的diff算法
输入 url 到请求返回发生了什么
了解浏览器缓存吗?浏览器缓存有哪些?
强缓存和协商缓存
EventLoop是什么?浏览器事故循环和Nodejs事故循环有什么区别?
怎么做前端工程化规范? (prettier、eslint、commitlint、webpack/vite、CI/CD)
Promise 有哪些静态方法?(all、race、allSettled)说一说 Promise.allSettled 方法?
async / await 原理?(generator语法糖)
TypeSctipt 如何将一个联合类型缩小为具体类型?
你的项目标js或css文件大概多大?多大比力符合?为什么? 
异步事故都有哪些区别?(宏任务、微任务)
前端常用优化性能方式?
说一说块盒子和内联盒子的特点? a. 两者设置内边距和外边距有什么区别?   内联元素设置边距:左右正常,上下无作用
讲一讲 BFC 和触发的条件?
说一下 JS 变量类型,怎么判断它们 和 它们的优缺点
cookie,session和token的区别
讲一下变量提拔
说一下vue组件间的通讯
之前做的项目有开辟环境和生产环境的区分吗?怎么区分
vue双向绑定中,界面驱动数据的监听方式是什么
ts最大的特点是强类型,你以为怎么用好他?有必要吗?强调了是两个标题
react会有一个入口文件来运行,运行时发生了什么?
css实现三栏布局
http1和http2的区别
https的加密过程
  1. 变量作用域和this指向标题,说输出
var bar = 'window'
function say() {
    var bar  = '111'
    console.log(bar)
    console.log(this.bar)
}
const obj = {
    bar: '222',
    say() {
        console.log(bar)
        console.log(this.bar)
    }
}
say()
obj.say()
obj.say = say
obj.say()
  .async函数输出次序标题
async function f1() {
    console.log(1)
}
async function f2() {
    console.log(2)
    await console.log(3)
    // 取消注释后输出次序又是怎样
    // console.log(5)
}
function f3() {
    console.log(4)
}
f1()
f2()
f3()
  
手写题:
  手写深拷贝 ( 支持 原型继续 和 循环调用 )
  实现一个函数,可以将数组转化为树状数据布局​
1. 数组只有一个没有 parentId 的元素,为根节点​
2. 输出一个根节点,打印出树状布局​
// 入参格式参考:​
const arr = [​
  { id: 1, name: 'i1' },​
  { id: 2, name: 'i2', parentId: 1 },​
  { id: 4, name: 'i4', parentId: 3 },​
  { id: 3, name: 'i3', parentId: 2 },​
  { id: 7, name: 'i7', parentId: 3 },​
  { id: 8, name: 'i8', parentId: 3 }​
]
  
数组实现reduce、map
  算法:最大子数组和
  算法:最长不重复字符串
  ① 数组扁平化(函数传入两个参数,第一个为数组,第二个为扁平化层级) ② 实现斐波那契数列
扁平数组 转 树布局
  找出出现最多次的字符
  写一个函数,实现输入的ajax请求串行输出(可用递归、迭代、await都可以)。
 二叉树、完全二叉树、满二叉树区别
 二叉树遍历时间复杂度,最好最坏
 二叉树遍历方式,以哪个节点为主 ?
  手写监听数组      ---重写原型方法(push,pop,shift,unshift),利用proxy监听对象的方式
链表反转
  一只青蛙可以一次跳上2个台阶,也可以调试1个台阶,求跳上n级台阶共多少种跳法
  算法:括号匹配
  写一个重复实行函数
  写一个函数遍历统计页面上所有的dom元素,而且以对象的形式返回
  以下是本人现实面试的标题
   一、
先容项目中的难点
  http请求中有什么内容,(http响应头,http状态码,http的传输方式,网络模型,https,tcp/ip)
  tcp协议有什么特点
  计算机网络的分层
  http2.0新增了什么(和http1有什么区别)
  react和vue有什么区别
  手写题:
判断变量输出
  var a = 0;
var b = 0;
var c = 0;
function fn(a){
  console.log('fn',a++,c);
  function fn2(b){
    console.log('fn2',a,b,c);
  }
  var c = 4;
  fn = fn2;
}
fn(1)
fn(2)
  事故循环输出
console.log('start');
async function async1(){
  console.log('async1 start')
  await async2();
  console.log('async1 end')
}
async function async2(){
  console.log('async2')
}
setTimeout(()=>{
  console.log('setTimeout')
},0)
async1()
new Promise((res)=>{
  console.log('Promise1')
  res()
}).then(()=>{
  console.log('Promise2')
})
  console.log('end');
  反转链表 ,链表有什么特点
  反问:
哪里必要加强提拔?(知识点应该学习的深入一些,算法必要多练)
  
二、
  写一个vue项目,你会怎么实现
  vue3的生命周期
solt插槽是怎么利用的
  sesstion和cookie
跨域标题怎么解决
是否了解web安全
for in和for of
  {
    a:1 ,
  b: [1,2,3,4,5],
  c: ()=>{},
  d: {
     e: null,
     f: {
         
     }
  }
}
  三、
  
  先容项目,歌词和进度条是怎么保持同等的?项目中歌曲可以播放的格式有哪些?
  vue2转vue3怎么实现?
  js的事故循环是什么?
  反问,公司的技能方向是什么?前端开辟人数有多少?
  
自我先容
  问项目标题,echart图表是怎么用的?
  h5和css3有没有了解?有什么新特性?
  有没有用过ai编程?(colipot)
  学习的过程有没有碰到困难不理解的地方?是怎么解决的
  碰到不会的标题会怎么查?
  认为自己有什么优缺点?
  闲聊了几句,家在哪里,现在居住在哪里?
  
  四、
  自我先容
  为什么选择学习前端,说一下前端的学习门路
  先容项目标难点以及是怎么解决的
  如果项目启动的时候有白屏,怎么解决?
  vue2和vue3的区别?proxy实现响应式为什么更好?
  webpack怎么优化性能?
  反问:公司的前端的技能方向是什么?vue
  
  五、
  自我先容
  项目中有懒加载的效果是怎么实现的?
  知道块级标签和行内标签是怎么排布的吗?分别有哪些标签呢?
  input标签有哪些type类型?
  了解语义化标签吗?有哪些标签是语义化标签呢?
  浏览器的标准模式和怪异模式,怪异模式下会怎么渲染dom?
  css有哪些选择器?伪类选择器有哪些?
  css怎么实现一个水平垂直居中的布局?
  有哪些position定位属性?分别是什么效果?
  js的事故传递机制是怎么样的?(ul里有一个li,触发点击时怎么响应事故,如果要让ul先触发怎么实现?)
  
  反问:公司的前端的技能方向是什么?vue,react,原生
   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表