360前端一面30min疯狂拷打+解析

前端一面, 被疯狂拷打, 当然也是因为我本来就菜

1. 为什么没有实习

啊?当然是找不到实习(bushi)
大二技术不过关, 大三在搞科研()差不多就这样

2. 简单介绍一下你感觉自己最突出的项目

balabalaba开始吟唱

3.说一下输入url以后发生了什么

看起来很简单的问题, 但是疯狂拷打了()

(3.1)先根据域名,协议,端口检查是否合法

但是反问:如果url不合法会发生什么

当 URL 不合法时,浏览器通常会通过显示错误消息或警告来通知用户。具体的表现形式取决于 URL 的错误类型以及浏览器的实现。 当协议不合法的时候,服务器会返回400错误。当域名不合法的时候,会提示无法找到服务器/DNS解析失败/无效的url。

(3.2)将域名进行dns解析服务,得到ip地址

但是反问:DNS的具体流程

先检查本地缓存:浏览器首先检查本地 DNS 缓存,看看是否已经缓存了该域名的 IP 地址。如果有,直接使用这个地址。

向本地 DNS 服务器查询:如果本地缓存中没有,浏览器会向配置的本地 DNS 服务器(通常由互联网服务提供商提供)发送查询请求。本地 DNS 服务器会检查自己的缓存。如果找到该域名的 IP 地址,则将其返回给浏览器。如果没有找到,继续进行下一步。

递归查询:本地 DNS 服务器开始进行递归查询。它会向根 DNS 服务器发送请求。 通过根服务器, 顶级服务器,域名服务器进行递归查找。 找到域名服务器以后, 本地服务器向这个域名服务器发送请求, 并将结果缓存。最后反馈给浏览器。

(3.3)然后建立tcp链接

但是反问:请说出三次握手的具体情况;

第一次握手:客户端发送报文段, 告知服务端客户端已经准备好

第二次握手:服务端接受到客户端发送过来的报文段以后, 向客户端发送一个报文段, 告知客户端:服务端已经接受到客户端准备好的情况

第三次握手:客户端接受到返回的报文段以后, 向客户端发送最终的确认报文段, 服务端接受以后, 双方建立起稳定的tcp链接。双方都知道彼此的存在, 并且双方确认了对方也知道自己的存在。

(3.4)然后发送http请求

但是反问: http和https有了解吗

(开始吟唱)端口不一样。 明文传递。安全性

(3.5)得到后端发送过来的资源html,css,js

但是反问:浏览器怎么判断资源类型呢?
1. 首先根据http响应头部进行判断
2.根据资源后缀名进行判断
3. 根据请求的形式进行判断
4. 根据文件的具体内容进行判断
5. 在html内部, 根据link标签以及script标签进行判断

(3.6)然后构建dom树, 渲染规则, 合并render树

但是反问:dom树是怎么构建的

解析 HTML:浏览器从 HTML 文档的开头开始逐行读取内容。

构建 DOM 节点:创建节点,设置属性

处理嵌套结构: 父子关系: 当浏览器遇到开始标签时,会将其添加到当前的父节点中。当遇到结束标签时,浏览器会识别出当前节点的结束,从而将其与父节点的关系建立起来。 文本节点: 如果在标签之间有文本内容,浏览器会创建一个文本节点并将其与相应的元素节点关联。

处理特殊情况
    自闭合标签: 对于自闭合标签(如 <img />、<br />),浏览器会直接创建节点而不需要结束标签。
    错误处理: 尽可能修补

构建完成后的 是一个dom树对象

后续处理:样式和脚本: 在 DOM 树构建完成后,浏览器会根据 CSS 和 JavaScript 进行样式计算和脚本执行。这可能会导致 DOM 的进一步变化(如添加、删除节点)。

(3.7)布局, 绘制什么的

但是反问:重排和回流了解吗

但是反问:如何减少回流

1. 尽量减少或者合并dom操作
2. 尽量使用css来表示样式, 减少js样式修改
3. 尽量减少使用表格布局
4. 尽可能缩减dom树的深度
5. 避免频繁读取样式, 使用变量进行缓存

4. 手写js继承, 这个真的没有半点准备,没写出来

原型链继承, 组合继承, 寄生继承

组合集成, 在子类中调用父类的构造函数

//父类对象
function Parent(name) {
    this.name = name;
}

// 子类对象
function Child(name, age) {
    // 调用父类构造函数
    Parent.call(this, name);
    this.age = age;
}

寄生继承,在子类构造函数中创建一个父类对象, 然后给追加东西

//父类对象
function Parent(name) {
    this.name = name;
}

// 子类对象
function Child(name, age) {
    const child=new Parent(name);
    child.age=age;
    return child;
}
全部评论
佬 这个是实习转正还是秋招
点赞 回复 分享
发布于 2024-11-01 21:41 重庆
url不合法是不是直接用搜索引擎去搜索输入的网址
点赞 回复 分享
发布于 2024-10-12 14:21 贵州
这问题,感觉像同一个面试官
点赞 回复 分享
发布于 2024-09-23 18:23 重庆

相关推荐

10-08 10:50
已编辑
重庆大学 Web前端
2.&nbsp;青岛海尔科技一面&nbsp;业务面&nbsp;8.8自我介绍介绍我的研究生阶段的研究方向(三维重建相关的),介绍一下实习工作(也选了三维重建相关的)如果需求不清晰怎么办如果开发项目的技术栈不会怎么办如何快速学习有没有了解ai相关的前端开发三天后通知我g了说专业方向和实践经验不太匹配岗位要求。我还纳闷怎么都问我研究相关的,感觉都没怎么看简历,我明明前端相关内容很多。3.&nbsp;兴业银行一面&nbsp;AI面&nbsp;8.8自我介绍、校园经历vuejs的核心框架、如何实现双向绑定的、vue-router是什么如何进行路由跳转二面&nbsp;15min&nbsp;8.15自我介绍想问react吧但我不会闭包及应用场景vue2和vue3的区别let、const、var的区别项目做过什么优化浏览器的渲染流程CDN除了前端做过其他什么吗另外一个面试官开始问应该是后端老师老师说你简历里面写熟悉http协议,那问一下&nbsp;http无状态(what&nbsp;没听过啊555,我只知道状态码啊)项目的用的什么数据库,和后端怎么连接的,用了连接池吗(没有)了解连接池吗(没有)过了,但是要去福建线下参加一个为期五天的数字挑战赛,没去。4.&nbsp;虾皮&nbsp;电商上海一面&nbsp;1h&nbsp;8.14自我介绍问项目做了什么,但没有拷打node有什么优势express中间件怎么用(这个真忘了)闭包继承(dbq我听了两遍听的g层,重庆到处都是G层真没绷住,幸好是反应过来了)原型链vue的双向绑定、v-model,vue3有什么不同vue3有了解吗?composition&nbsp;api浏览器v8回收机制代码:1.&nbsp;写一个ToDoList可以操作内容状态,但已完成的内容不能变更状态为未完成2.&nbsp;写一个api的自动重传retry函数,可以传入重传次数和等待时间3.&nbsp;有一个依赖关系,例如A创建了才可以创建B,B创建了才能创建C,我想要输入id打印对应的实体。如:a_id&nbsp;---&amp;gt;A实体,b_id&nbsp;---&amp;gt;AB实体,c_id&nbsp;---&amp;gt;ABC实体(感觉和课程表那个题很类似,记录出度入度,但是当时没细想直接用到的链表)问我有没有offer(我说没有&nbsp;他说你才开始找吗&nbsp;&nbsp;这句话听得我怎么出现了希望呢)二面&nbsp;45min&nbsp;8.20你觉得你有什么项目亮点,比较有成就感的浏览器缓存Promise的链式调用了解吗?返回的是新的对象还是原来的,为什么代码:把fetch支持超时之后执行.catch(和race竞态有关)、判断一个号码是不是好号码,有至少四个连续相等或连续递增加一原型链的输出是什么,如果想输出另外一个那么应该改成什么肯定g了这几个代码做的很烂,面试官还是校友,丢人丢到家了最后问了下我简历写的一个研究方向是什么面试官有点感兴趣。反问:技术栈react5.&nbsp;科大讯飞&nbsp;教育&nbsp;OFFER武汉一面&nbsp;30min&nbsp;8.14自我介绍,问项目闭包Workjsnode做了些什么(幸好没往下问hhh)Webpack防抖节流ES6和commonJS的区别Json.stringfy和parse做深拷贝的时候有没有什么缺点有没有复盘的习惯新技术怎么快速学习(又是这个问题)还有些啥我有点忘记了&nbsp;但都很简单二面&nbsp;30min&nbsp;8.22自我介绍遇到的挫折、值得骄傲的事情地域选择其他的记不住了都不重要反问:一个星期出结果很不像业务面,倒是像hr面,但是还有一个hr面三面&nbsp;8.276.&nbsp;百度&nbsp;百度网盘北京一面&nbsp;1h&nbsp;8.18自我介绍,项目flexflex的选项如果想可放大一倍,不可缩小,初始200px怎么设置vue2的双向绑定,和vue3有什么不同vue2的缺点箭头函数和普通函数this的指向有哪些情况(口述的场景,唠嗑都听大了hhh)如何修改this指向事件循环(也是口述了一个场景,当时脑袋一抽没说对)requestAnimationFrame有了解吗他是在微任务之前还是之后执行的(之后,requestAnimationFrame&nbsp;是一个浏览器提供的API,用于在下次浏览器重绘之前执行回调函数)nextTick有了解吗?为什么nextTick可以在异步更新之后立即执行深拷贝怎么做的?(我说了lodash和递归)有没有什么原生js可以实现的(我说了Json)打包工具XSS和CSRF有了解吗?怎么防护前端缓存有哪些?token存在哪里的node(这我写了但是没深入过)后面还是出了个事件循环的输出题代码:传入数组和k,判断有多少种方式使连续数字相加为k(遇到代码我还是放弃吧哎)反问:技术栈Vue2/3...二面&nbsp;30min&nbsp;8.25&nbsp;感觉被kpi面了自我介绍,觉得什么项目收获最大有没有offer(没有啊!不要再问啦!!!啊啊啊啊啊)自己的优点和缺点学校的专利做的什么(展开讲了一下,然后让我一句话总结)对什么方向感兴趣(说的ai,然后展开说)有没有学什么新技术,一般都是在哪里学的前端路由是怎么做的(举例vue中)那原生的hash和history的原理是什么页面渲染的流程项目的数据库是怎么设计的,那一范式、二范式的要点是什么vue2、vue3的区别(完全没听清,就听到个vue的改进什么的)git是怎么做的(??我说的栈,说个map都好点嘛)遇到冲突了怎么办组件库怎么去设计(我最开始说的组件,后面他又说)那库呢(举例elementui)怎么样尽可能还原设计稿页面渲染性能怎么进行优化反问:1v1带教,一周出结果(本来想问有没有什么问题,但我想着明摆着kpi面,问了一会儿他弯酸我两句)虽然面了30min,但面试官老是保持沉默,东看西看不知道是在看简历还是他自己的东西,实际也就20min吧。虽然也没有什么态度很轻蔑,看着还是和蔼可亲的。7.&nbsp;合合信息&nbsp;扫描全能王hr面&nbsp;15min&nbsp;8.21对公司的了解对以后offer的什么比较看重你希望的培养模式是怎么样的三个关键词形容自己反问:技术栈vue,面试流程(3-4面)hr面&nbsp;20min&nbsp;8.26还是那些问题,搞两次hr面。。。
点赞 评论 收藏
分享
评论
8
43
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务