文章目录

  • 前言
  • 一、JavaScript部分
    • 1.JavaScript中的prototype有什么作用?
    • 2.那你知道如何用prototype实现继承吗?
    • 3.那比如我要把一个方法添加到对象上, 让大家都可以使用它, 该怎么做?
    • 4.ES6中如何实现类的继承?
    • 5.深拷贝和浅拷贝的区别是什么?
    • 6.如何实现浅拷贝, 实现深拷贝?
    • 7.你知道JavaScript是一门单线程语言吧, 那么执行过程中各种方法和函数的执行是如何来避免阻塞的, 他们的执行顺序有什么规律吗?
    • 8.JavaScript的代理模式你知道吗?
  • 二、CSS
    • 1.说一下CSS中的Flex布局吧.
    • 2.对position布局有理解吗? 说一下absolute和relative的区别?
    • 3.那absolute和fixed的区别呢?
  • 三、Vue、Node
    • 1.说一下Vue相对于原生JS写法, 有何优点?
    • 2.Vue是如何实现的数据双向绑定?
    • 3.Node, 好像是叫我说一下甚麽优点来着?
    • 4.Node相对其他后端语言有何优势呢?
    • 5.嗯, 那Node是如何实现的高并发呢?
  • 总结

前言

我面试回来了.jpg


一、JavaScript部分

我没有被问到HTML, 而CSS也被放在JavaScript部分之后了, 大概就问了这些, 我记了7个让我印象比较深刻的问题.

1.JavaScript中的prototype有什么作用?

讲真我对于prototype的理解就只局限在构造函数那一块, 还是做题积累的一点知识.
我当时说: “常见的情况是使用构造函数来生成对象, 然后…函数prototype里的属性会成为生成的对象的__proto__里的属性, 也就是这个对象里的属性.”
prototype我真的就只知道这个作用了.

2.那你知道如何用prototype实现继承吗?

现在看, 其实以前接触过这个, 就是向构造函数的prototype上加属性, 然后再new这个构造函数, 这样生成的对象里救会存在这些prototype中存在的属性.
问题是我不知道这叫"继承", 我直接说了"不太清楚…"

function fun1() { }
function fun2() { }fun1.prototype.name = "name";
fun1.prototype.aMethod = function () { console.log("aMethod!") }fun2.prototype = fun1.prototype;
var obj = new fun2();
obj.aMethod();

3.那比如我要把一个方法添加到对象上, 让大家都可以使用它, 该怎么做?

我答的大概是下面这种方法了, 但是这种并非给baiX这个函数添加了方法, 而是单纯的给aMethod添加.

function baiX(name, age) {this.name = name;this.age = age;
}
var aMethod = new baiX();
aMethod.xxx() = function () {console.log("doXxx");
};

应该是这样, 直接把方法加到原型上, 我应该想到的, 刚才一直在问原型相关:

function baiX(name,age){this.name = name;this.age = age;
}
baiX.prototype.xxx = function(){console.log("doXxx");
}

4.ES6中如何实现类的继承?

子类继承父类使用extends:

class SuperClass {constructor() {this.name = "Super.";}
}
// 定义子类,并继承以上父类
class SubClass extends SuperClass {constructor() {// 在构造器中,直接用super()来调用父类的构造器super();}
}

5.深拷贝和浅拷贝的区别是什么?

浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存

6.如何实现浅拷贝, 实现深拷贝?

参考大佬的文章: 浅拷贝和深拷贝的区别

var obj = { a:1, arr: [2,3] };
var shallowObj = shallowCopy(obj);function shallowCopy(src) {var newobj = {};for (var prop in src) {if (src.hasOwnProperty(prop)) {newobj[prop] = src[prop];}}return newobj;
}

7.你知道JavaScript是一门单线程语言吧, 那么执行过程中各种方法和函数的执行是如何来避免阻塞的, 他们的执行顺序有什么规律吗?

“您是说宏任务和微任务吗?” “嗯, 是的.”
“js执行前会对任务进行第一轮分拣, 将微任务和可以立即执行的任务出来执行, 然后原则上一轮执行会后取宏任务执行, 宏任务里如果还有微任务或者可立即执行的话会在下一轮的分拣微任务和可立即执行的时期来执行, 如果宏任务内还套着宏任务, 那么也进入下一轮的宏任务队列.”

我感觉大体是这样的, 我没有提前对这个问题做什么准备, 但是面试官似乎不太满意这个答案…

8.JavaScript的代理模式你知道吗?

“额, 没有去了解过.”
这个单独开一篇文章吧…

JS答到第三题的时候我觉得这把铁定是寄了, 啥也不会啊这…


二、CSS

1.说一下CSS中的Flex布局吧.

“您是说Flex的各项属性吗?” “嗯, 对.”
(依次display:flex–order–justify-content–align-items–flex-wrap)
“好了好了, 知道你比较了解了.”

2.对position布局有理解吗? 说一下absolute和relative的区别?

“relative是相对与元素原本所在的位置进行定位.”
“absolute…在父级存在定位的情况下优先相对于父级定位自身, 如果没有的话会相对于…(这里有点懵, 我知道这样它要根据body来定位, 但是当时我没想好怎么描述这个范围)网页的可见区域吧, 大概是Body.”

3.那absolute和fixed的区别呢?

“absolute定位不会随着页面的滚动改变位置, 如果页面滚出absolute定位元素的可见区域, 那么这个元素不再能看到, 但是fixed相对于浏览器窗口进行定位, 不论如何滚动都始终保持在屏幕的某个位置.”
“fixed经常拿来做’返回顶部’.”


三、Vue、Node

他能问我Node我是没想到的…这可能算给自己挖了一个坑, 不过好在坑不大啦…

1.说一下Vue相对于原生JS写法, 有何优点?

我答的挺没条理的…而且没答全吧…
“Vue是一个基于类MVVM架构的框架, 相比于原生JS直接进行DOM操作, Vue更倾向于通过去改变环境来间接的影响DOM, 从代码方面来说这样可以避免在代码里进行大量的DOM操作, 在代码量很大的时候, 优点尤其可以得到展现, 就是…对后期的代码维护比较好, 之后就是不用再手动一个一个的去操作DOM也提升了开发效率.”
以下是我没答出来的: 实现单页面富应用, 有样式隔离, node模块化, 插件可以用包管理工具即时安装使用比较方便, 然后路由系统可以比较方便的自己定义.

2.Vue是如何实现的数据双向绑定?

提到数据双向绑定, 我感觉没什么好说的但是我看过v-model指令的基本原理, 然后我就说了…现在想想简直是驴唇不对马嘴…
我说v-model指令内部对一些方法进行了封装, 对于不同的元素, v-model内部有不同的方式去获取和改变它们的值, 这也是为什么对某些元素使用v-model指令会报错v-model不能使用在该元素上.
我觉得这个大佬写的很好了, 我就不在这班门弄斧了(捂脸):
如何理解Vue数据双向绑定原理

3.Node, 好像是叫我说一下甚麽优点来着?

“Node的模块基于common.js这个模块化规范, Nodejs让JS成为了一门…图灵完备的语言, 一门理论上甚麽都可以实现的语言.可以让js脱离浏览器这个桎梏运作.”
…勉勉强强, 看起来好像还是不太满意这个答案.

4.Node相对其他后端语言有何优势呢?

性能很高, 完全由JS构建而且可以实现服务器.
の…Node处理高并发的能力比较强吧, 嗯…大概可以达到Java的十倍左右.

5.嗯, 那Node是如何实现的高并发呢?

我以前专门去查过这个 但是被问到的时候我的脑子里只出现了俩词: “异步"和"合并”
啊啊!..反正就是没记住吧, 挺后悔的.

传统单线程处理机制下要等数据库返回结果, 这样会拖慢效率.
Node访问数据库过程中, 后面的代码会继续执行, 而通过回调函数来对数据库返回的结果进行处理, 一种异步思想.

当某个I/O操作执行完毕会, 立即以事件的形式通知执行I/O操作的线程, 并且调用这个事件的回调函数. 线程的事件循环不断的检查有没有未处理的事件并依次处理, 以确保这个机制得以维持。

这种非阻塞模式下, 一个线程永远在执行计算操作, 这个线程的CPU核心利用率永远是100%.


总结

不过好在还是过了…

整理一下昨天二面的题目相关推荐

  1. 两次腾讯面试挂二面的苦逼经历

    这个春招估计也要介绍了吧,自己投的公司也不多吧,投简历的时候,如果你提前批和正常网申都投的话,可能会获得两次笔试/面试的机会,我投了两次腾讯,不过,两次都在二面挂了,特别是第二次二面,我真的决定自己太 ...

  2. iOS开发面试知识整理 – OC基础 (二)

    iOS | 面试知识整理 – OC基础 (二) 1.C和 OC 如何混编 xcode可以识别一下几种扩展名文件: .m文件,可以编写 OC语言 和 C 语言代码 .cpp: 只能识别C++ 或者C语言 ...

  3. 20210725整理的比较全面的C语言入门笔记!

    https://www.eet-china.com/mp/a65253.html 整理的比较全面的C语言入门笔记! 一口Linux 2021-07-25 10:24 277浏览3评论1点赞 C语言一经 ...

  4. 花了3个月整理的超级全面的Python资料和Java面试题,分享给大家!

    为广大Python爱好者精心准备的<Python进阶>,是<Intermediate Python>的中文译本,IntermediatePython这本书具有如下几个优点:简单 ...

  5. 关于js数组方法的题目整理 6.24更新至题目5

    目录 题目一: 题目二  把问题1变回去 题目三 要求:1.给出一个名字找出数组中 与 '名字' 处于统一领导下的同事 2.给出一个名字找出数组中 与 '名字' 下的下属 题目四: 解法一: 解法二: ...

  6. 老夫整理的Java面经+题目(阿里、腾讯、头条、京东、IBM等等)佛渡有缘人

    # 简介 经过招聘季每个人都会有相当多的面试经历,对我来说把这些写出来一方面是为了学习,另外一方面也希望能够为之后求职的同学提供一定的借鉴意义 我的笔试经历会把主要记得的题目列出来 我的面试经历详细介 ...

  7. c语言国二sizeof题目,国二c语言选择题参考答案

    第四.五部分参考答案 第4节与第5节涉及到指针比较多,用文字描述比较难.大家以视频解析为准即可.这里提供参考答案 第4节 字符串.函数的递归.标识符的作用域和存储类 1-10:ACCAA  DBACC ...

  8. 新一轮的心情整理(有二年没来这里了)

    已经有几年没写随笔了,在这段时间里发生了很多事情,很难有几句简短的话说清楚,所以我想到这里,还是需要整理一下,其实在多的事情,都应该聊一聊.       那我就按时间顺序排一排先:       1.自 ...

  9. 数学实验课MATLAB实验报告二(题目+代码)

    目录 前言 1.(1) 题目 代码 1.(2) 题目 代码 1.(3) 题目 代码 1.(4) 题目 代码 2. 题目 代码 总结 前言 2022年10月21日晴转多云转晴然后黑天了,不冷.今天有一件 ...

最新文章

  1. Gartner:2018年十大科技趋势与其对IT和执行的影响
  2. 15-07-08 数组-- 手机号抽奖、福利彩票随机生成
  3. C语言 一个字符常量占几个字节
  4. Oracle Dababase_buffer_cache数据库高速缓存组织结构剖析
  5. 【转】extern “C“以及__declspec(dllexport) 讲解和def文件dll导出方法
  6. 利用组策略管理器映射网络驱动器的方法
  7. 开源中国翻译频道链接收藏
  8. 2.窗口大小改变和侧边栏收缩的时候,echarts图表的自适应
  9. win10mysql服务器修改密码,Windows下mysql修改root密码的4种方法
  10. iOS iPhone各机型尺寸及导航栏高度
  11. 将进酒:《惜樽空》敦煌抄本
  12. Aurix TC397多核开发建议
  13. 青云QingCloud推出“平步青云”创业扶持计划
  14. 【python安装】其他支持库的安装
  15. 深度学习基础----吴恩达课后编程练习(一)识别猫
  16. 金蝶显示访问加密服务器失败,金蝶提示“访问加密服务器失败,错误号:-16”到底如何解决?...
  17. python实现cv2图片读取显示及图片不显示或显示不全的问题分析
  18. QT 事件系统之QMouseEvent鼠标事件
  19. 回望过去三年(作为程序猿踏入社会的三年)
  20. My SQL简介与安装教程_001

热门文章

  1. Java 中阿拉伯数字转大写
  2. python: 网络编程及fastapi快速搭建web服务器
  3. 狂暴者 pat basic 练习二十一 个位数统计
  4. eclipse中maven项目黑色*
  5. 【经验分享】一名慕星人多年的工作感想
  6. c51语言里十六进制的乘方,C51浮点数显示、浮点数表示方法
  7. php trie,php敏感词过滤使用第三方扩展trie_filter
  8. springboot中poi操作合集
  9. 2020年5G市场六大预测
  10. c# 微信公众号开发(一)服务器配置,验证token