经纬恒润面试记录
一面
1.组件间通信方式
(1)父向子组件:
1.通过props向子组件传递数据。子组件通过props属性来接受父组件的数据。
2.通过refs通信:将refs用在子组件上面,其引用指向子组件的实例,父组件通过实例来访问组件的数据和方法
(2)子向父组件:
1.通过$emit向父组件通信。$emit绑定一个自定义事件,当这个事件被执行时就会将参数传递给父组件,父组件监听并接收参数。
2.通过$parent通信:子组件通过$parent获取父组件的实例,获取父组件的数据和方法
(2)兄弟组件之间通信
- eventBus方法:通过创建一个vue实例来作为消息传递的对象,通信的组件通过在这个实例上监听和触发事件来实现消息传递
- $parent/refs:设置兄弟组件的refs分布为childA和childB。那么ChildComponentB可以通过this.$parent.$refs.childB.someMethodInChildB();可以获取兄弟组件 ChildComponentB的数据方法
(3)任意组件之间通信
- vuex:一个用来存储共享变量的容器
2.从浏览器输入url到页面展示的过程,越详细越好
整个流程如下:
1、用户输入URL并回车; 2、浏览器检查URL,组装协议,构成完整的URL; 3、浏览器进程通过进程间通信(IPC)把URL请求发送给网络进程; 4、网络进程收到URL请求之后首先会判断本地缓存中是否有该请求资源,如果有则直接返回给浏览器进程; 5、如果没有的话就准备向服务器发起请求,具体流程如下: 5.1进行DNS域名解析,获取服务器的ip地址; 5.2利用ip地址和服务器进行TCP连接,三次握手; 5.3构建请求头信息并发送; 5.4服务器返回响应,网络进程接收到响应头和响应信息,解析响应内容; 6.网络进程解析响应的流程: 6.1检查状态码:如果是301或302,则需要重定向,获取跳转地址再次进行请求; 6.2如果响应码是200则返回响应数据; 6.3数据传输完成之后断开tcp连接,进行四次挥手; 6.4网络进程检查content-type类型,若是字节流格式,则将请求提交给下载管理器,结束;若是text/html则通知浏览器进程准备渲染进程; 7.准备渲染进程:首先检查当前的url和之前打开的渲染进程的根域名是否相同,若相同则复用原来的进程,若不同则开启新的渲染进程; 8.传输数据,更新状态: 8.1渲染进程准备好之后,浏览器进程向渲染进程发送“提交文档”的消息,渲染进程接收消息之后与网络进程建立传输数据的管道; 8.2渲染进程接收到数据之后,向浏览器发送“确认提交”; 8.3浏览器进程接收到确认消息之后更新页面,此时页面是空白的; 8.4渲染进程进行页面解析,子资源加载,HTML 通过HTM 解析器转成DOM Tree(二叉树类似结构的东西),CSS按照CSS 规则和CSS解释器转成CSSOM TREE,两个tree结合,形成render tree(不包含HTML的具体元素和元素要画的具体位置),通过Layout可以计算出每个元素具体的宽高颜色位置,结合起来,开始绘制,最后显示在屏幕中新页面显示出来
3.实现整个项目的思路和流程
4.项目难点是什么
讲了登录权限控制和大量三维数据渲染
5.大量点数据渲染问题
cesium.clusterEntity类
6.跨域怎么解决的
跨域是浏览器基于同源策略的一种安全手段,是浏览器的限制,而postman之类的非浏览器端都不受跨域限制。
同源策略是指协议、主机、端口都相同。
解决方法:
(1)cors跨域资源共享:在django后端设置cors配置,Access-Control-Allow-Origin 设置为*或者目标Host;
(2)Vue里面配置代理服务器:在vue项目里设置一个代理服务器,前端请求会发送到同源的代理服务器中,由于请求的是同源的服务器,所以不会触发跨域。然后由代理服务器转发到后端服务器,这是因为代理服务器与后端服务器之间的通信不受同源策略限制。
7、反问:公司的业务方向有哪些?
公司总部base成都,前端技术栈vue2和vue3,业务有webgl三维可视化。
已挂
面试记录及复盘