- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
程序员高频面试题及实战答案(大厂真实场景版)
一、前端面试题(场景+实操)
1.实际开发中遇到的浏览器兼容性问题及解决方案
问题:项目上线后发现,旧版IE浏览器不支持border-radius圆角和Atotype.forEach方法,如何处理?
答案:
CSS兼容性:用Autoprefixer工具自动添加浏览器前缀,无需手动写-ms-等前缀,配置后构建工具会自动生成兼容代码:
/*原始代码*/
.box{border-radius:8px;}
/*生成后兼容代码*/
.box{-ms-border-radius:8px;border-radius:8px;}
JS兼容性:用core-js引入polyfill,或手动实现兼容方法(小型项目推荐):
//手动实现forEach兼容
if(!Atotype.forEach){
Atotype.forEach=function(callback,thisArg){
for(leti=0;ithis.length;i++){
callback.call(thisArg,this[i],i,this);//注意原方法的参数顺序
}
};
}
核心原则:优先用成熟工具解决,特殊场景手动兼容,避免过度适配极低版本浏览器(需和产品确认兼容范围)。
2.大型项目的前端性能优化实操方案
问题:单页应用首屏加载慢(白屏3秒以上),滚动时偶发卡顿,怎么优化?
答案:
首屏优化(重点解决白屏):
资源压缩合并:用Webpack打包时开启JS/CSS压缩,合并小文件减少请求数;
图片优化:将banner图转为WebP格式(体积减少50%+),列表图用懒加载(IntersectionObserverAPI):
//图片懒加载核心代码
constobserver=newIntersectionObserver((entries)={
entries.forEach(entry={
if(entry.isIntersecting){
constimg=entry.target;
img.src=img.dataset.src;//替换真实地址
observer.unobserve(img);
}
});
});
document.querySelectorAll(img.lazy).forEach(img=observer.observe(img));
缓存策略:静态资源设置Cache-Control缓存(比如JS/CSS缓存7天),接口用ETag协商缓存;
卡顿优化(解决重绘重排):
批量操作DOM:用DocumentFragment或隐藏元素后修改,避免频繁触发重排;
避免强制同步布局:不要在修改样式后立即读取offsetHeight等属性。
3.跨域问题的3种实战解决方案
问题:本地开发时前端(localhost:8080)请求后端接口(localhost:3000)被跨域拦截,生产环境域名不同也有跨域问题,怎么处理?
答案:
开发环境:Webpack配置代理(最简单):
//webpack.dev.js
module.exports={
devServer:{
proxy:{
/api:{
target:http://localhost:3000,
changeOrigin:true,//伪装请求来源
pathRewrite:{^/api:}//去掉前缀
}
}
}
};
生产环境(优先推荐):
后端设置CORS:响应头添加Access-Control-Allow-Origin:前端域名,允许GET/POST方法和自定义头;
备选方案:如果后端无法修改,用Nginx反向代理转发请求(隐藏跨域差异)。
二、后端面试题(Java核心+原理)
1.HashMap底层原理及JDK8优化
问题:HashMap怎么解决哈希冲突?JDK8相比JDK7有哪些关键优化?
答案:
哈希冲突解决方案:
存储结构:数组+链表(JDK8前),当链表长度8且数组容量=64时,转为红黑树(减少查询时间从O(n)到O(logn));
索引计算:先对key做hash()二次哈希(减少哈希碰撞),再用(数组长度-1)hash得到索引(保证索引在数组范
原创力文档


文档评论(0)