nodejs面试(2)

570 阅读4分钟

一、算法和数据结构

 1.实现一个函数,

   要求输入:[

                       {id:'10', des:'品种',type:['藏獒','柴犬','哈士奇']},

                       {id:'11', des:'颜色',type:['黑色','黄色']},

                       {id:'12', des:'体型',type:['小型','大型']}

                    ]

  输出:[

               {'10':'藏獒','11':'黑色','12':'小型'},

               {'10':'藏獒','11':'黑色','12':'大型'},

               {'10':'藏獒','11':'黄色','12':'小型'},

               {'10':'藏獒','11':'黄色','12':'大型'},

               {'10':'柴犬','11':'黑色','12':'小型'},

               {'10':'柴犬','11':'黑色','12':'大型'},

               {'10':'柴犬','11':'黄色','12':'小型'},

               {'10':'柴犬','11':'黄色','12':'大型'},          

               {'10':'哈士奇','11':'黑色','12':'小型'},

               {'10':'哈士奇','11':'黑色','12':'大型'},

               {'10':'哈士奇','11':'黄色','12':'小型'},

               {'10':'哈士奇','11':'黄色','12':'大型'}

            ]

 2.这道题是lettcode 腾讯面试题的一道:无重复字符中的最长子串

   给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为3 

示例2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为3

请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串 。

二、正则

1.实现一个函数function split(address)

省级地名,以“省”/“市”/“自治区”结尾,例如:江苏省,北京市,内蒙古自治区

市级地名,以“市”/“区”/“自治州”/“盟”结尾,例如:苏州市,朝阳区,临夏回族自治州,锡林郭勒盟

县级地名,以“县”/“市”/“区”/“旗”结尾

具体地名

例如:

输入

'江西省赣州市兴国县长岗乡长冈村15号'

输出

['江西省','赣州市','兴国县','长岗乡长冈村15号']

其它测试输入用例

// 输入

'广西壮族自治区南宁市新市区三工街道2号'

'青海省海西蒙古族藏族自治州乌兰县城管镇河东村1号'

'河北省廊坊市三河市燕郊镇燕郊阳光小区15号'

// 输出

['青海省','海西蒙古族藏族自治州','乌兰县', '城管镇河东村1号']

['广西自治区','南宁市','新市区','三工街道2号']

['河北省','廊坊市','三河市','燕郊镇燕郊阳光小区15号']

假设:

每个输入的字符串都必定符合上述内容格式,对不符合要求的字符串,函数可以抛出异常

每个地名中不包含结尾的关键字,例如不会有“市荆南区”, '区三工街道2号'这样的地名

2.实现一个函数 function SimplePassword(str),需遵循:

   1.必须包含大写字母

   2.必须包含特殊字符

   3.必须包含数字

   4.字符串不能包含“password”

   5.字符串长度必须大于7,小于31

三、消息队列、事件循环

1.实现一个消息队列,满足如下功能:

可以添加任务,任务包含任务数据,任务延迟触发的等待时间。

队列中任务保持先进先出原则:假设`A` 任务的触发等待时间为`X`,`B` 任务的触发等待时间为`Y`,`B`

在`A` 之后被添加入队列,则`A` 的前驱任务执行完成后等待时间`X` 后,

才执行`A`,同理在`A` 执行完成后,等待时间`Y`,才执行`B

2.请讲述一下事件循环。

3.宏任务、微任务,执行顺序是什么?每种各举例。

四、数据库、缓存技术

1.mysql有几种索引?有什么区别?

2.mongodb分片了解吗?请讲述。

3.redis中有几种数据类型。

4.mysql和mongodb有什么区别?项目中是如何选用的?

5.遇到过redis雪崩吗?

6.了解redis的持久化机制吗?

五、前端框架

1.讲述vue的虚拟dom

六、后端框架

1.对node多进程的开发有了解吗?

2.koa和express的区别?

目前在整理面试:

一、算法与数据结构

二、正则表达式

三、Js**、es基础**

四、Nodejs****常用框架与底层原理

五、常用数据库及缓存技术

六、消息队列

七、高并发、多进程、分布式

八、前端主流框架

九、Linux****运维部署知识,持续集成

十、网络编程、协议与安全知识

十一**、设计模式**