程序员高频面试题及实战答案(大厂真实场景版).docxVIP

程序员高频面试题及实战答案(大厂真实场景版).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档