前段时间受了学长的怂恿,去给AlloyTeam投了简历。刚巧赶上复习GRE,没怎么来得及复习……
疏于准备所付出的代价啊……一首凉凉夜色送给自己
引子
其实AlloyTeam主要是进行视频或者电话面试的,这次刚好是Weber潘佳韩来我们学校做招聘宣讲,于是就临时确定在酒店当面面试一下南京的申请人
(顺便吐槽一下,水游城Holiday Inn正门是真的难找)
自我介绍
中规中矩,姓名学校面试岗位,对自己性格亮点的一些展示(开朗热情,兴趣范围广),在自己所擅长的领域内建树的简单介绍
(讲道理我一直不会自我介绍啊摔……总感觉是强行尬介绍)
在小程序的开发过程中,遇到过哪些难题?怎么解决的
举了当时做maskmeet时遇到的要自定义一个swiper组件的例子。由于小程序自带的swiper样式太粗糙,所以直接针对touch事件手写了一个swiper。最后把这个自定义swiper封装成了组件,在其他页面中继续复用。
说完还不忘夸自己一句,“这件事情对我开发的思维造成了很大的影响,开始明白自己不能做一个API调用师,而要有一点工程师的尊严。我也开始思考在API之外,怎么采用比较底层的技术去实现一个功能”
请解释一下什么叫“不能做一个API调用师,要从底层去实现功能”
行吧,挖坑了……
举的例子还是在maskmeet里,要实现一个花里胡哨的模态对话框。当时研究了模态对话框的原理(弹出时对对话框以外部分操作无效),通过一个mask catch了对话框部分之外的touch事件
(打个广告,当时做完留下的笔记:实现属于自己的美美哒弹窗)
对微信小程序的开发有什么评价和想法
与动辄几十M的原生app相比,微信小程序最大的特点就是“轻”,“用完即走”的理念比较符合现在移动社会的潮流,也比较切合很多用户的需求
从开发角度来看,小程序是一个比较封闭的环境。这主要是为了用户的体验考虑,有助于维护微信的封闭生态。但是这样也导致了一些开发者在开发过程中容易踩坑,比如对语言新特性的支持总有延迟,框架的更新,特别是API方面“内幕比较深”,导致开发者不能轻易在wx对象注入自定义函数。
对微信小程序开发环境的理解
这个问题直接懵逼了……我这种边应用边学习的人并没怎么深入了解到这些底层实现的东西啊……
借用大神的答案:
微信小程序实质上包含两层运行环境,用户提供的 JS 代码运行在类似 Node.js 运行时的进程中,渲染进程运行在基于 Webkit 的 WebView 中,两个进程之间通过 IPC 进行通讯;微信对这一套运行环境做了封装,其中 WebView 层内置了模板引擎,用户可以通过 setData() 将 JSON 安全的数据传输给 WebView 层进行渲染,反过来也可以注册监听 WebView 层中的事件。实质上,用户代码均只能直接与类似 Node.js 的独立环境进行交互。
JS 代码首先被封装在严格模式下的 ES6 函数中,作为模块定义,然后对各个模块进行链接,再与小程序标准库 SDK 相链接,最后进行 minify 压缩并上传。
一个HTML页面是怎么样从代码变成我们看到的样子的
可能看我上一个问题直接懵逼了,就换了个宽泛点的问题来问
- 浏览器向服务器发起HTTP请求
- 收到响应。解析Header后拿到Body
- 解析HTML,构建DOM树。构建的同时对每个DOM节点挂载相应的CSS属性
- 顺序执行script标签(答得时候忘了这个)
- 渲染DOM树
为什么说对DOM的操作有可能会很费时间?
DOM 操作性能差是因为 JS 层的 DOM 内部有很多属性、事件、方法需要构造
所以现在主流的框架Vue,React都采用了DOM复用技术
对DOM复用的理解?
回收池。需要新节点时优先在回收池内寻找而不是新建
Vue和React各自的特点
Vue是面向单页面的轻量级框架,对新手友好
React基于JSX,较复杂传统
Vue如何把一个.vue文件变成标准格式的HTML代码的?
基本从这里就开始瞎比比之旅了……
template标签相对比较容易猜,就说了是从component层开始,一层层的把template注入app.vue,最终注入到index.html
js的话猜测是首先对每个component的函数进行标注,然后用了babel转译为标准js格式
对模板语言有什么了解?
emmmm……
不使用现有框架,如何处理需要大量动态渲染的场景?
emmmm……+1
讲了最基础的createElement,setAttribute,appendChild三连,然后想怎么优化的时候“框架”这两个字给了我灵感,又讲了实现DOM回收池的一些基础思路
话说Vue里面针对这种情况有专门的渲染函数去支持……
对WebSocket的理解
WebSocket基于连接,全双工通信,实时性较好,常用于高并发下对实时性要求很高的场景
ajax基于请求,只能由客户端向服务端发出。
还画蛇添足类比成了TCP和UDP,被嫌弃地指出了类比的错误……
在不支持H5的浏览器里如何实现类似WebSocket的功能
emmmm……+2
出来才想到可以用长连接……
怎么让资源不被浏览器主动缓存
这个问题前两天通神被问到过没答上来,我想了想我应该不会也这么背吧就没接着查,结果emmmm……+3
凭借有限的记忆答了HTTP Header里的Cache-Control: no-cache,但看脸色感觉不太对?……
总共面了一个小时,感觉整个人都很不好……这几天需要跟随通神脚步恶补基础知识了!