我的前端面试题前阵子去湖南帮忙面试了。第一次认真采访一个人。问题是我很久以前就开始考虑了。让我在这里整理一下。它必须是完全正确的。如有错误,请指点。一、初始页面准备1.1cssreset如何处理?我该怎么说*{margin:0;padding:0;}还是更详细的https://github.com/ccchangkong/article/issues/51.2commonmetatags?页面不缩放,双核浏览器chrome内核优先于Balabala1.3。正常页面兼容到什么程度,如何处理兼容问题?从W3C或caniuse查询Barabara1.4以降低页面复杂性?结构合理,伪元素合理使用巴拉巴拉2,css2.1盒模型介绍,扩展双边框,多层边框https://github.com/ccchangkong/article/issues/62.2定位问题,让一个div垂直左右居中https://github.com/ccchangkong/article/issues/42.3布局问题,如何处理浮动引起的高度塌陷(clearfloating).clearfix{*zoom:1;}.clearfix:after{content:'';display:block;height:0;overflow:hidden;clear:both;}2.4布局问题,inline-block布局问题高度问题,由基线引起,设置了vertical-align在元素宽度设置的情况下还可以,意外的宽度不够,鬼符问题,设置父元素font-size:02.5布局问题,flex属性速记和反向排序(如果使用)flex:none|[弹性增长]||[弹性收缩]||[flex-basis]flex-direction:row-reverse2.6移动端适配rem布局,响应式布局,手机浏览器和webview常见问题(ios点击事件不生效,Androidwebview各种权限)3.js3.1jQuery选择器,已经找到id为test的元素,找到所有的a类元素,然后找到最近的b类元素,返回上一步过滤操作前的结果$('#测试').find('.a').closest('.b').end()3.2jQuery动态事件绑定和解绑.on()and.off()3.3js数组和数组的拼接a=a.concat(b);a.push.apply(a,b);a.push(...b);3.4vue组件通信(如果可能)props、events、路由参数借助vuex3.5vue-router,路由懒加载(如果有)paramsimport('./Foo.vue')3.6callwithnativecodein混合开发(如果是)//调用原生代码暴露的接口,appFun(state,{funName,val=null}){if(state.dev.type==2){window.android[funName](val);}elseif(state.dev.type==1){window.webkit.messageHandlers[funName].postMessage(val);}}//把函数挂在window对象上暴露给APPlet_this=this;window.setGeolocation=function(params){_this.setGeolocation(params);};或者参考jsbridge4,工程(如果可能的话)4.1开发中跨域代理proxyTable4.1webpack优化配置,减少打包体积,加快首屏显示速度https://github.com/ccchangkong/article/blob/master/vue-cli%E4%BF%AE%E6%94%B9.mdhttps://ssr.vuejs.org/zh/#%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E6%B8%B2%E6%9F%93-ssr-%EF%BC%9F因为要做的工作是切图Master,所以js的问题比较少问,有些问题会相对于面试官做过的,比如富文本(标签转义)、文件生成、票据打印(pt单位)、地图开发(坐标系、点-线-面操作)。我的意思是,我搞砸了很多事情。
