自我介绍
队列和栈的区别
排序算法以及各自的复杂度
快排什么时候复杂度最差
五层网络模型
应用层有哪些协议,哪些是 TCP,哪些是 UDP
TCP 三次握手和四次挥手
TCP UDP 的区别
HTTP 请求有哪些缓存相关的 header 字段
cache-control 和 expires 的优先级,为什么
cache-control 是 http1.1 的,expires 是 http1.0 的
Etag 和 Last-Modified 的区别
Etag 返回什么状态码
3 开头的还有什么状态码,4 开头的呢,5 开头的呢,504 表示什么(网关超时)
事务的四个特性
原子性、一致性、隔离性、持久性
进程与线程的区别
1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位) 2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。 而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。 3、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。 4、但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
nodejs 是单线程还是多线程的,Java 呢,C++呢
nodejs 单线程的好处是什么
(1)多线程占用内存高 (2)多线程间切换使得CPU开销大 (3)多线程由内存同步开销 (4)编写单线程程序简单 (5)线程安全
水平垂直居中怎么实现
箭头函数与普通函数的区别
箭头函数能实现 ES6 的类吗
判断数组的方式,instanceof 方法有什么弊端
v-if 和 v-show 的区别
display
Vue 双向数据绑定原理
Vue 怎么监听数组的变化
Vue 通过重写数组的某些方法(7 种)来监听数组变化,而不是触发数组的 setter 方法
Vue3 里通过什么方式监听数据
Vue key 的作用
列表里调整顺序,虚拟 DOM 是怎么发生变化的
看代码输出
Promise.resolve() .then(() => { console.log('1'); throw 'Error'; }) .then(() => { console.log('2'); }) .catch(() => { console.log('3'); throw 'Error'; }) .then(() => { console.log('4'); }) .catch(() => { console.log('5'); }) .then(() => { console.log('6'); }); // 1 3 5 6
console.log('1'); setTimeout(() => { console.log('2'); }, 0); Promise.resolve() .then(() => { console.log('3'); }) .then(() => { console.log('4'); }); console.log('5'); // 1 5 3 4 2
代码讲思路
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目, 以数组形式返回答案。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 示例 1: 输入:nums = [8,1,2,4,3] 输出:[4,0,1,3,2] 解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,4 和 3)。 对于 nums[1]=1 不存在比它小的数字。 对于 nums[2]=2 存在一个比它小的数字:(1)。 对于 nums[3]=4 存在三个比它小的数字:(1,2 和 3)。 对于 nums[4]=3 存在两个比它小的数字:(1,2)。 示例 2: 输入:nums = [6,5,4,8] 输出:[2,1,0,3]
思路:暴力循环,两层循环,时间复杂度 O(N^2) 如何优化:先用 map 将 nums 的元素与索引保存下来,然后对 index 排序,排完只要一层遍历即可,时间复杂度 O(NlogN)
function solution(nums) { let map = {}; nums.forEach((item, index) => { map[item] = index; }); nums.sort((a, b) => a - b); let res = []; for (let i = 0; i < nums.length; i++) { let n = nums[i]; res[map[n]] = i; } return res; }
反问
部门业务,前端规模
二面吧,体验感超级棒,一方面吧,面试官面了一天了,确实累,也就问了一个问题就没再问,另一方面吧,没问问题之后我俩就开始闲聊了,轻松愉快。 面试官也是很有意思的人,从他说话就能感觉他是一个很好相处的人
自我介绍
项目简介
vue 双向数据绑定原理
getter 的作用,在 getter 里面做什么
nodejs 是单线程还是多线程
单线程的优势
反问
本文作者:前端小毛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!