Node 面试

面试造火箭,工作拧螺丝

下面是一部分造火箭的步骤,工作上帮助不大。 是否有用自行思考。

通用问题

  • 语言设计中空引用(null reference)的存在有什么问题?假设你想要将空引用的概念从你的首选语言中移除,可能导致什么结果?

    在 C, Java, go, Js 中使用 空引用 对应会出现 断错误, nullpointer Exception, panic, undefined. 出现这些错误时如果没有对异常处理程序会终止工作。 在不同语言中移除的后果

    • Js, 在数据初始化时必须制定数据,缺少灵活性。与其他语言对接时会缺少对应的语义。 例如 web 不传参数可以用 null 表示。
  • 封装的重要性体现在哪儿?
    通过封装可以屏蔽内部实现细节, 让业务开发逻辑清晰。 通用功能封装为模块可以反复使用。 一个成功的语言必然有对应成功的包管理器, 通过包管理引用封装好的模块即减少工作量又更稳定。

  • 不变性(Immutability)是指: (变量的)值只能在创建的时候被设置一次,之后就不能被改变。为什么不变性对写更加安全的代码有帮助
    不同语言对不变的变量都有对应的关键字。 不变性可解决并发时的读写冲突问题。

  • 在客户端渲染(client-side rendering)和服务端渲染(server-side rendering)之间,你是如何权衡的?
    web 由原来的 jsp 发展到现在的前后端分离再到 next.js 框架的诞生。 客服端渲染由浏览器实现网页的显示。 主要包含了数据的读取等。 服务端渲染是在一个网页请求后 html 就生成完毕。 客服端渲染对客户的电脑配置要求更高,体验更好。 服务端渲染对 seo 更友好。并且加载更快。但是每一次访问都需要重复加载 js/css.

  • 当你在浏览器地址栏输入google.com回车之后都发生了什么?
    首先通过 dns 获取服务器 ip 地址,然后建立 tcp 连接。 在 tcp 连接上进行 http 协议通信。