我的前端面试题
前阵子去湖南帮忙面试,话说还是第一次正经面试别人,问题是老早以前就开始想了,在这里整理一下,答案只是简要,也不一定完全正确,如有错误,劳烦指点
1、初始页面准备
1.1 css重置如何处理?
怎么也该说个
*{
margin: 0;
padding: 0;
}
或者详细点的https://github.com/ccchangkong/article/issues/5
1.2 常用meta标签?
页面不缩放,双核浏览器chrome核优先巴拉巴拉
1.3 平常页面兼容到什么程度,兼容性怎么处理?
从W3C或caniuse上查询巴拉巴拉
1.4 减少页面的复杂度?
合理的结构,合理使用伪元素巴拉巴拉
2、css
2.1 盒模型介绍下,引申双边框、多层边框
https://github.com/ccchangkong/article/issues/6
2.2 定位问题,让一个div垂直左右居中
https://github.com/ccchangkong/article/issues/4
2.3 布局问题,浮动导致的高度塌陷如何处理(清浮动)
.clearfix {*zoom:1;}
.clearfix:after {content: '';display: block;height: 0;overflow: hidden;clear: both;}
2.4 布局问题,inline-block布局的问题
高低问题,基线导致的,设置vertical-align
在元素宽度设置没问题的情况下,意外的宽度不够,幽灵字符问题,设置父元素font-size:0
2.5 布局问题,flex属性简写和反向排序(如果用到)
flex:none | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]
flex-direction: row-reverse
2.6 移动端适配
rem布局,响应式布局,移动浏览器和webview常见问题(ios点击事件不生效、安卓webview各种权限)
3、js
3.1 jQuery选择器,已经找到了id为test的元素,往下找class为a的所有元素,接着往上找最近的一个class为b的元素,在回退到上一步筛选操作前的结果
$('#test').find('.a').closest('.b').end()
3.2 jQuery动态事件绑定和解绑
.on()
和.off()
3.3 js数组和数组的拼接
a=a.concat(b);
a.push.apply(a,b);
a.push(...b);
3.4 vue 组件通信(如果会)
props
、events
和借助vuex
3.5 vue-router路由传参、路由懒加载(如果会)
params
import('./Foo.vue')
3.6 混合开发中与原生代码互相调用(如果会)
//调用原生代码暴露的接口
,appFun(state, { funName, val = null }) {
if (state.dev.type == 2) {
window.android[funName](val);
} else if (state.dev.type == 1) {
window.webkit.messageHandlers[funName].postMessage(val);
}
}
// 把函数挂在window对象上来暴露给APP
let _this = this;
window.setGeolocation = function(params) {
_this.setGeolocation(params);
};
或者
引用jsbridge
4、工程化(如果会)
4.1 开发中的跨域代理
proxyTable
4.1 webpack优化配置,减小打包体积,加快首屏展现速度
https://github.com/ccchangkong/article/blob/master/vue-cli%E4%BF%AE%E6%94%B9.md
因为要做的工作以切图为主,所以js问题问的比较少,针对面试者做过的东西会相对的提些问题,如富文本(标签转义)、文件生成、票据打印(pt单位)、地图开发(坐标系、点线面操作)。。
话说我捣鼓过的东西不少啊
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。