Giter VIP home page Giter VIP logo

node-interview's Introduction

前端的后端 + 自动化运维知识体系 + 面试题

整个系列文章正在更新,每个主题参考了国内大量的付费课程总结而来。

计算机基础面试题

简述

为什么需要了解计算机基础知识, 没有基本的计算机基础,比如基本的 node api 和一些后端常见的概念,比如进程,线程都会有很大的困难,所以了解基本计算机基础知识是必修。

之前在下总结了一下这部分的基础知识,深度适合没有基础的前端同学。

欢迎加我微信,进群一起学习:

计算机组成原理基础知识 + 面试真题

  • 基础知识
  • 面试题
    • 字符编码相关:一个中文占多少字节?Unicode 跟编码有什么关系?js 是什么编码?
    • 为什么 0.1 + 0.2 不等于 0.3?为什么 0.1 + 0.1 等于 0.2 ?请结合 IEEE 标准来说,如何避免这种计算误差?
    • ...

计算机网络基础知识 + 面试真题

  • 基础知识
  • 面试题
    • HTTPS 一定安全可靠吗?
    • url编码规则是什么?
    • 为什么Tcp 2次握手不行?什么是泛洪攻击?Tcp的安全可靠,不丢不重是如何做到的?

操作系统基础知识 + 面试真题

  • 基础知识
  • 面试题
    • 进程和线程的区别与联系?
    • 为什么要有文件描述符?
    • 信号是什么? linux中kill命令默认发送的信号是什么,kill -9发送的信号是什么?

算法leetcode简单题88道

  • 上半部分
  • 下半部分
    • 美团面试题
      • 有效的字母异位词
      • 杨辉三角
    • 蔚来面试题
      • 合并两个有序数组
      • 二叉树层次遍历

算法leetcode中等题

  • [待更新...]

Linux相关

简述

你想玩全栈,Linux基础知识必须掌握,建议至少掌握到中级的水平,而且这些属于死记硬背的知识。这点努力都不愿意付出,就别谈学习后端知识了。

Linux基础知识

  • 基础知识
  • 面试题
    • linux 这边常用的查看日志的指令?
    • linux 下进程间通信方式?管道、共享内存什么场景下会用?两个进程不在同一个机器如何通信?
    • 何查看 linux 进程信息,其中 vsz 和 rss 有什么区别?

Shell脚本基础

复杂的Shell脚本,建议直接用node.js去写(会python的也是py优先),但是简单的脚本还是要会写

  • [待更新。。。]

小公司业务架构

Alt text

主要包含的技术:

  • nginx做4层或者7层负载均衡
  • 搭建nfs存储服务
  • 搭建back up备份服务
  • ssh免密登录
  • 防火墙iptables

这些技术后期在学习k8s后,部分服务会跑在k8s中,并在k8s章节添加监控服务 + 日志服务,其实监控和日志细分的话太多了,我们做的可能比较粗糙,如果做的很专业,会花费巨大的精力,而且小公司架构确实也用不着,毕竟需要一个团队去维护单独的日志服务或者监控服务。

Alt text

如果有对ci/cd感兴趣的,请看我的ci/cd教程

  • [待更新。。。]

Javascript相关

与前端 Js 不同, 后端方面除了 SSR/爬虫之外很少会接触 DOM, 所以关于 DOM 方面的各种知识基本不会讨论. 浏览器端除了图形业务外很少碰到内存问题, 但是后端几乎是直面服务器内存的, 更加偏向内存方面, 对于一些更基础的问题也会更加关注.

部分问题:

  • 类型判断
    • typeof NaN 结果是什么?以及为什么?
  • 类型判断
    • 如何精确判断引用类型?
  • 原型链
    • Function.prototype === Object.proto 结果是什么,以及为什么?
  • 作用域
    • javascript 是静态作用域还是动态作用域?
  • 执行上下文栈
    • 有些人可能要说《高级程序设计》的 VO,AO,对不起,这是 ES3 的说法。答这道题就走远了
  • 引用传递
    • js 中什么类型是引用传递, 什么类型是值传递? 如何将值类型的变量以引用的方式传递?

模块机制详细分析文章可以参考我之前写的一篇文章NodeJS 有难度的面试题,你能答对几个?,最开始就讨论了 commonjs 的模块机制。

  • 模块机制
    • 请介绍一下 node 里的模块是什么
    • 请介绍一下 require 的模块加载机制
  • 热更新
    • 如何在不重启 node 进程的情况下热更新一个 js/json 文件? 这个问题本身是否有问题?
  • 上下文
    • 每个 require 的 js 文件,作用域如何保证独立呢?
    • 知道 vm 模块有什么用吗?
  • 包管理
    • npm 包管理下,node_modules 里安装的包是按什么结构和逻辑整理目录的

异步还是不异步? 这是一个问题.

  • Promise
    • 问烂的题就是问你什么是宏任务,什么是微任务,有啥区别,然后上个题问你打印顺序
  • Events (事件)
    • 如下情况是否会死循环?
const EventEmitter = require("events");

let emitter = new EventEmitter();

emitter.on("myEvent", () => {
  console.log("hi");
  emitter.emit("myEvent");
});

emitter.emit("myEvent");

以及这样会不会死循环?

const EventEmitter = require("events");

let emitter = new EventEmitter();

emitter.on("myEvent", function sth() {
  emitter.on("myEvent", sth);
  console.log("hi");
});

emitter.emit("myEvent");
  • 阻塞/异步
    • 如何实现一个 sleep 函数
    • 如何实现一个异步的 reduce? (注:不是异步完了之后同步 reduce)
  • 并行/并发
    • 并行和并发有啥区别

后面的篇章需要了解操作系统的一些基本运行原理,才能更好的回答问题,比如进程就是一个典型的例子,以下链接是我之前写的关于操作系统的基础知识: https://juejin.cn/post/6844904112803282957

Node.js 是以 IO 密集型业务著称. 那么问题来了, 你真的了解什么叫 IO, 什么又叫 IO 密集型业务吗?

  • Readline 是如何实现的? (有思路即可)
  • Net (网络)
    • 知道 TCP 的粘包是什么吗?
    • cookie 与 session 的区别? 服务端如何清除 cookie?
  • UDP/Datagram
    • 什么场景适用 udp
  • HTTP
    • 什么是跨域请求? 如何允许跨域?
    • 列举几个提高网络传输速度的办法?
  • DNS (域名服务器)
    • hosts 文件是什么? 什么叫 DNS 本地解析?
  • RPC
    • 常见 RPC 的方式有哪些
  • TTY
    • 什么是 TTY? 如何判断是否处于 TTY 环境?
  • OS (操作系统)
    • 不同操作系统的换行符 (EOL) 有什么区别?
  • Path
    • 为什么要用 path 模块去处理路径(兼容性问题)
  • 命令行参数
  • [Doc] Errors (异常)
    • javascript 标准错误分为几种
    • 怎么处理未预料的出错? 用 try/catch ,还是其它什么?
    • 什么是 uncaughtException 事件? 一般在什么情况下使用该事件?
    • 什么是防御性编程? 与其相对的 let it crash 又是什么?
    • 为什么有些异常没法根据报错信息定位到代码调用? 如何准确的定位一个异常?
  • [Doc] Debugger (调试器)
    • 内存泄漏通常由哪些原因导致? 如何分析以及定位内存泄漏?
  • 单元测试
    • 为什么要写测试? 写测试是否会拖累开发进度?什么是覆盖率?
    • 平时自己用的单测工具(前端和 node 部分)
  • 压力测试
    • 压测的目的是什么
  • [Point] Mysql
    • 索引有什么用,大致原理是什么? 设计索引有什么注意点?
    • char 和 varchar 字符宽度的区别
    • 字符集 utf8 和 utf8mb4 的区别
    • 为什么需要规范 sql 数据规范化?
  • [Point] Mongodb
  • [Point] 数据一致性
    • 什么是数据一致性,如何解决
    • 什么是事务,在 mysql 如何开启
  • Crypto (加密)
    • 知道对称加密和非对称加密吗?https 中它们彼此是如何协作的呢?
  • HTTPS
    • https 解决 http 的哪些问题?https 是如何解决
  • XSS
    • 过滤 Html 标签能否防止 XSS?
  • CSRF
    • 什么是 CSRF,如何防止?
  • 中间人攻击
    • 如何避免中间人攻击?
  • Sql/Nosql 注入
    • 为什么会产生 sql 注入

最后

欢迎大家一起共建这个知识库,以及不吝啬 star 哦!感谢!

node-interview's People

Contributors

lio-mengxiang avatar

Stargazers

小赵同学 avatar 油老师 avatar Careteen avatar llq-yyds avatar  avatar CodingAndSleeping avatar Shokroc avatar Yandif avatar hezhen avatar boomboy avatar 南 avatar backpast avatar 咸鱼 avatar  avatar danJ avatar tudou avatar 靈均 avatar qjk avatar  avatar _tay avatar bqxbqx avatar wjx0820 avatar guaqiu avatar gaoshengqing avatar formula avatar  avatar  avatar running avatar lihaoyang avatar ln0y avatar GrayJiang avatar Guihua Xu avatar Liuhuaifu avatar 苍南 avatar  avatar KangXinzhi avatar  avatar  avatar  avatar  avatar Cavano avatar Jaime avatar  avatar  avatar Jeremy Xu avatar Puk Hung-Yu avatar Roojay avatar jq.yao avatar 余腾靖 avatar  avatar vortesnail avatar 花帽子 avatar cxqeric avatar Yeyan1996 avatar Skybiubiubiu avatar RobertYang avatar Pithy avatar  avatar  avatar  avatar  avatar rockyuse avatar 吴立志 avatar 会编程的猫 avatar R avatar Nansen Ho avatar Chiko avatar Jerome avatar Caterpillar avatar 红豆MVP avatar  avatar Eugenio Sulla avatar starkyao avatar  avatar Jeremy Shen avatar Andromeda Thomas avatar wangjiale7 avatar  avatar Lucky Chen avatar Ethan Wood avatar Yssss avatar  avatar YoungZhang avatar Jiajia Chen avatar Zhang taimin avatar Frey Su avatar  avatar leonliang avatar plane avatar luckytown avatar 1420734331@qq.com avatar  avatar Novias avatar  avatar Gavin avatar  avatar momo avatar  avatar  avatar  avatar

Watchers

 avatar  avatar R avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.