这面博客记录一些面试相关的问题,有自己遇到的有朋友遇到的,常常复盘,必有回响,愿大家都有个美好前程。
# 某二线
# 自我介绍
# 介绍下你做的项目,用了什么技术,实现了哪些功能?
# 说说nginx是什么?聊聊对nginx的原理和你的理解
# 什么是ssr?原理和具体过程是什么?
# 浏览器渲染原理
# 服务端渲染原理
# 前端如何做测试?如何与服务器做接口测试?
# 跨域是什么?如何解决?
# 移动端如何做适配?什么是flex布局?
# 小程序框架存在哪些问题?如何解决?
# 上传下载功能你是如何实现的?
# 说说项目中遇到的问题有哪些?如何解决?
# 浏览器如何做兼容?
# 柯莱特
# vue兄弟组件之间传值
# vuex的使用方法
# mutation和action有什么联系,有什么区别
# vue-router路由如何传参?如何获取参数?
# v-model='message'其中message需要提前定义吗?在哪定义?不定义会怎样?
# 页面第一次加载会触发哪些生命周期,实例挂载完成是在哪个阶段?
# v-if有哪些性能问题?
# 代码运行结果
var a=20
function show(){
console.log(a)
var a=10
}
show()
# 代码运行结果
const promise = new Promise((resolve, reject) => {
console.log(3)
resolve()
console.log(5)
})
promise.then(() => {
console.log(4)
})
console.log(5)
# 代码运行结果
var test = (function(x) => {
console.log(110)
this.x = x
return function(y){
console.log(110)
return this.x+y
}
}(function(x, y){
console.log(110)
return x
}(1, 2)))
console.log(test(3)) // 4
分析:考查立即执行函数和闭包 测试结果是我自己加的,打印顺序为110,111,112。所以它的执行是先计算立即执行函数的参数,再传入参数执行立即执行函数返回的匿名函数。
# v-show和v-if指令的共同点和不同点
# 代码运行结果
bar()
var foo = 10
function bar(){
console.log(foo) // undefined
if(!foo){
var foo = 20
}
console.log(foo) // 20
}
分析:考查函数声明和变量声明有提升这个梗 编译后在内存中,代码是下面这样子滴
var foo
function bar(){...}
foo = 10
# 用css实现一个宽度为屏幕20%的正方形
# 健客网
# 代码执行结果
var a={'name': 'aaa'}
var b=a
b={'name': 'bbb'}
console.log(a.name)
var c=a
c.name = 'ccc'
console.log(a.name)
# 代码执行结果
var name = 'aaa'
function f(){
console.log(name)
var name = 'fff'
}
f()
# 代码执行结果
var name = 'www'
function getName(){
console.log(this.name)
}
var o = {
name: 'ooo',
getName: getName
}
var f = o.getName
f()
# 代码执行结果
setTimeout(function(){
console.log('timeout')
})
new Promise(function(resolve){
console.log('promise')
for(var i=0; i<1000; i++){
i==99&&resolve()
}
console.log('promise2')
}).then(function(){
console.log('then1')
})
console.log('global1')
# 用友
# 行内元素与块状元素的区别
# 以下哪个标签不属于html5标准(选项实在看不清楚,知道是考查html5就行)
# css选择器的优先级
# 说说你对定位的理解
# 请写出三种清除浮动的方法
# 如何实现不知道宽和高的元素水平垂直居中
# 有一个文字内容容器<span class='text'></span>
,在不编写任何JavaScript代码的前提下,如何让用户可以自由的编辑其中的文字
# 为以下元素编写一段不超过10行的css,使其显示为一个红色的指向右边的等边直角三角形
<span class="trangle"></span>
# 代码
html{
font-size: 20px
}
body{
font-size: 0.5rem
}
.container{
font-size: 1rem;
height: 0.5rem;
width: 50vw;
}
当前浏览器viewport尺寸为600px(宽)*400px(高),请写出.container的font-size,height和width的px值
font-size: ___px
heght: ___px
width:___px
# 代码
body{
background: red
}
@media screen and (max-width: 480px){
body{
background: blue
}
}
当前浏览器viewport宽度为480px,请问body的背景是什么颜色?
# 代码
.container{
position: absolute;
top: 10px;
left: 20px;
transition: all 1s ease
}
.container.transition-1{
left: 30px
}
.container.transition-2{
transform: translateX(30)
}
请问.transition-1和transition-2哪个运行效率更高?请简述原因。
# 如何实现0.5px的线
# 代码弹出值
function(){
var a=5
function(){}
alert(a)
function b(){
b=6
alert(b)
var c=d=b
}()
alert(d)
alert(c)
alert(b)
}
# 代码输出
this.a = 20
var test = {
a: 40,
init: () => { // 注意胖剪头
console.log(this.a)
function go(){
this.a = 60
console.log(this.a)
}
go.prototype.a = 50
return go
}
}
var p=test.init()
p() // this指向window 20 60
new(test.init())() // 指向实例后的对象 60 60
# 某公司
# 代码
输入a-2,b=3,输出a=3, b=2
# 找出整型数组中乘积最大的三个数
[-10, 7, 29, 30, 5, -10, -70]
# 假设有n级台阶,每次最多允许跨m步(m<=n),那么有多少种跨越方式?
# 写一个函数满足以下行为
// 输入格式
{
"a":{"b": {"c": "d"}},
"e": {"f": {"g": "h"}}
}
// 输出格式
[[a,e], [b,f], [c,g]]
# 英文短文要求100单词以上,介绍最近一家公司所负责的项目的逻辑流程
# 某公司
# webpack按需加载失败导致包很大怎么办?如何优化包大小和构件速度?如何分包?如何固定依赖不重新打包,依赖如何升级?
# 如何启动多核压栈打包时间
# 部署npm install,如何优化不需每次部署都重新下载?
# 缓存
# git工作流
# vue virtual-dom比较原理
# v-for的key
# cdn的优点是?
# https加密
# 浏览器输入地址后发生什么?
# 项目中遇到的难点?如何解决?
# 代码题
function(){
var fn
return fn
function fn(){
fn=1
}
}