🦸个人主页: 小卢要刷力扣题
🦸♂️ 作者简介: 大三学生,准备找工作的人儿
🕍 推荐一款找工作神器网站: 《牛客网》 |笔试题库|面试经验|实习招聘内推|
⛪ 系列专栏: 《前端面试题》
🐋 希望大家多多支持😘一起进步呀!
📝 如果文章对你有帮助的话,欢迎评论💬点赞👍收藏📂加关注

秋招正式批已经到来,相信不少小伙伴在为找工作而烦恼,对自己的实力不太自信,感觉好难找工作,不用怕,下面我来给各位推荐一个知名刷题网站《牛客》
牛客网,是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的招聘类网站。牛客是领先的数字化招聘求职解决方案服务商,牛客向企业提供校园招聘技术人才招聘一站式解决方案服务,主要包括招聘渠道服务(发校招岗位收简历) ,招聘SaaS工具服务(笔、面试 、群面系统 ),招聘传播服务(技术竞赛、广告、线上招聘专场、牛客职播。
牛客网题库中包含几万道题目,主要通过第三方购买和 UGC 的方式获得,牛客网先后尝试了直播和录播课,内容覆盖笔试题解析、面试技巧和机器学习等。

在里面可以与大家交流最近的面试心得,
如果不知道怎么面试的或者面试技巧掌握得不够牢固的小伙伴可以在牛客里面找面经来看,快速提升自己的面试能力,以更快的找到自己心仪的工作



这一题考察的是CSS选择权重
!important > 内联样式 > ID选择器 > 类选择器(属性选择器、伪类选择器)> 元素选择器(伪元素选择器)> 通配符选择器
因此选A

before和after都属于伪类选择器
因此选C

这一题考察的是动画效果属性的值有哪些
linear,ease,jump,step都是正确的,死记就行了
因此选C

cellindex是td和th标签的属性
cellIndex 属性可返回一行的单元格集合中单元格的位置。
因此选D

这一题答案出错了
应该选CD
join() 方法将数组作为字符串返回。
元素将由指定的分隔符分隔。默认分隔符是逗号 (,)。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
因此选CD

使用Number构造函数的话,创造出来的a是属于Object类型
因此选A

这一题考察的是变量的作用域
name在块内也被var声明了,因此var声明提前,块内声明覆盖外部声明。但在if判断时,name只是声明,并没有定义,因此进入“undefined”分支。

很多人以为await会一直等待之后的表达式执行完之后才会继续执行后面的代码,实际上await是一个让出线程的标志。await后面的表达式会先执行一遍,将await后面的代码加入到microtask中,然后就会跳出整个async函数来执行后面的代码。
由于因为async await 本身就是promise+generator的语法糖。所以await后面的代码是microtask(微任务)

因此执行顺序为
输出1
然后进入foo(),输入2,遇到await,让出线程
输出3,
进入bar,输入4,遇到await,让出线程
输出5
进入foo里面的Promise,输出8
下一步输出9
遇到await,让出线程
bar的await进入线程,输出6
下一步输出7
foo的await进入线程,输出18,
下一步输出19
因此为1234589671819

这一题考察的是函数this指向
this指向调用func的对象,myObject调用func,因此前两个输出中this== myObject ==self,myObject.foo=1.
返回的函数是由window对象调用的,window中没有foo,因此第三个输出undefined,self依旧是myObject,因此输出1.

bar函数中为立即执行函数,没有被其他对象显示调用,指向window
因此选B

缓冲技术是为了协调吞吐速度相差很大的设备之间数据传送而采用的技术
缓冲技术的引入的主要目的:
1、改善CPU和I/O设备之间速度不匹配的矛盾
2、可以减少对CPU的中断频率,放宽对中断响应时间的限制
3、提高CPU和I/O设备之间的并行性
因此选A

当某个进程所需要的资源(非CPU)被其他进程占据时,会进入阻塞状态,等其他进程释放了资源后,进入就绪状态,等待cpu执行
因此选B

要删除一个结点,必须要有前驱结点
把前驱结点的next指针指向当前节点的next结点,就完成了删除操作
因此选B

在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。分布式一致性又分为强一致性和弱一致性:
弱一致性:
最终一致性:DNS、Gossip协议等
强一致性:
同步
Paxos
Raft
ZAB

redis的数据类型都是通过多种数据结构来实现,主要是出于时间和空间的考虑,当数据量小的时候通过数组下标访问最快,占用内存最小【压缩列表是数组的变种,允许存储的数据大小不同】;
因此选A

这一题考察的是操作系统的页面置换算法
最佳置换算法
该算法选择淘汰的页面是:未来永远不会再使用的页面 or 未来最长时间不再被访问的页面。该算法保证了可以获得最低缺页率,但无法预知未来页面的使用情况,因此目前无法实现,但通常用来评价其他算法
先进先出(FIFO)页面置换算法
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
最近最久未使用(LRU)算法
该算法以过去预测未来,选择之前最长时间未使用的页面置换。
时钟页面置换算法(CLOCK)
时钟置换算法可以认为是一种最近未使用算法,即逐出的页面都是最近没有使用的那个

这一题考察的是栈的使用
A:如果只有1容量的话,B不可能在第一个,因此A错误
B:如果只有2容量,BDC这个顺序是不能实现的,B错误
C:经过推导,3容量可以满足要求,因此选C

这一题题目描述得不好,个人认为A和D都正确,答案是A
算法的特征
●输入:一个算法必须有零个或以上输入量。 [1]
●输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
●明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地符合要求或期望,通常要求实际运行结果是确定的。
●有限性:依据图灵的定义,一个算法是能够被任何 图灵完备 系统模拟的一串运算,而图灵机器只有有限个状态、有限个输入符号和有限个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
●有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。

这一题考察的是IP地址的有效范围

因此选A

这一题考察的是应用层协议
应用层协议有:1、域名系统DNS协议、FTP文件传输协议、、telnet远程终端协议、HTTP超文本传送协议、SMTP电子邮件协议、POP3邮件读取协议、Telnet远程登录协议、SNMP简单网络管理协议等。
因此选D

这一题考察的overflow属性的值对应的效果
visible:默认值。内容不会被修剪,会呈现在元素框之外。
hidden:内容会被修剪,并且其余内容是不可见的。
scroll:内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto:如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit:规定应该从父元素继承 overflow 属性的值。

elements 集合可返回包含表单中所有元素的数组。
< option > 用于定义在 < select > , < optgroup > 或 < datalist > 元素中包含的项,并不属于表单元素
< label > 标签为 input 元素定义标注(标记)也不属于表单元素
因此选AD


A:isArray() 用于确定传递的值是否是一个 Array
B:typeof运算符用于判断对象的类型,但是对于一些创建的对象,它们都会返回’object’
C:instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上
D:Object.prototype的类型是Object,所以Object.prototype.toString()自然就返回[object Object]
.call方法实现构造继承,也就是父类.call(子类), 父类是Object.prototype.toString这个函数(函数也是对象,万物皆对象),子类是arr,这样子类arr就继承了对应的方法,最终得到[Object Array]这个结果。

match方法可在字符串内查找一个或多个与指定正则表达式匹配的子字符串。
d+匹配多个数字——1,2,2,3 一共四个
D+匹配多个非数字——ab,cd,ef,g 也是四个
c选项和d选项一个意思。

这一题难的选项为D
12的二进制为001100
07的二进制为000111
因此12&7的二进制为000100,转为十进制为4
因此选ABD

这一题没有解析
我的猜测是mousedown,mouseover,wheel这三个事件都是频繁触发,因此容易失败

drwxr-xr-x
第一位表示文件的类型:有三种形式,-表示文件、d表示目录、l表示连接
rwx:表示用户文件的权限 可读可写可执行
-xr:表示文件所属组的权限
r-x:表示其他用户权限
因此选CD

数据结构分为:线性数据结构 非线性结构
线性数据结构包括 数组、线性表、栈、队列、串
非线性数据结构包括: 多维数组、集合、树、Hash
因此选ABD

算法的五个基本特性分别是:输入、输出、有穷性、确定性和可行性。
因此选ABC

NAT64是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6网络侧用户发起连接访问IPv4侧网络资源。但NAT64也支持通过手工配置静态映射关系,实现IPv4网络主动发起连接访问IPv6网络。NAT64可实现TCP、UDP、ICMP协议下的IPv6与IPv4网络地址和协议转换
DS-lite技术集合了4in6隧道和NAT44功能,包含两个功能实体,B4(Basic Bridging Broadband Element)位于用户侧实现4in6隧道的封装和解封装,AFTR(Address Family Translation Router)位于网络侧实现4in6隧道的解封装和封装以及私网到公网地址NAT44转换。DS-lite关注度比较高,可以说是未来长期的ipv6过渡方案
6RD是IPv6快速部署(IPv6 Rapid Deployment)的简称,其对应标准为RFC5569,6RD是在6to4基础上发展起来的一种IPv6网络过渡技术方案
IVI技术是国内研发的翻译网关技术,虽然都属于翻译网关,但是NAT64转换基于状态,而IVI可以进行无状态的映射。 网络运营商通过对一部分IPv4和IPv6地址进行映射,生成IVI专用地址。
选BD

使用动态规划
状态转移方程:dp[i]==dp[i-1]*(i+1);
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if (n>=1 && n<=200){
BigInteger[] dp = new BigInteger[n];
dp[0] = BigInteger.valueOf(1);
dp[1] = BigInteger.valueOf(2);
for (int i = 2; i < n; i++) {
dp[i] = BigInteger.valueOf(i + 1).multiply(dp[i - 1]);
}
System.out.println(dp[n - 1]);
}else {
System.out.println("Error");
}
}
}

简单的动态规划题目
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param matrix int整型二维数组
* @return int整型
*/
public int maxValue (int[][] matrix) {
// write code here
int n=matrix.length;
int m=matrix[0].length;
int[][] dp=new int[n][m];
dp[n-1][m-1]=matrix[n-1][m-1];
for(int i=n-1;i>=0;i--){
for(int j=m-1;j>=0;j--){
if(i+1<n){
dp[i][j]=Math.max(dp[i+1][j]+matrix[i][j],dp[i][j]);
}
if(j+1<m){
dp[i][j]=Math.max(dp[i][j],dp[i][j+1]+matrix[i][j]);
}
}
}
return dp[0][0];
}
}