ajax面试题?前端面试题解题思路
各位老铁们,大家好,今天由我来为大家分享ajax面试题,以及前端面试题解题思路的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
Web前端岗位面试题有哪些
1.对WEB标准以及W3C的理解与认识
标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性;
2.xhtml和html有什么区别
HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言
最主要的不同:
XHTML元素必须被正确地嵌套。
XHTML元素必须被关闭。
标签名必须用小写字母。
XHTML文档必须拥有根元素。
3.Doctype?严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?
用于声明文档使用那种规范(html/Xhtml)一般为严格过度基于框架的html文档
加入XMl声明可触发,解析方式更改为IE5.5拥有IE5.5的bug
4.行内元素有哪些?块级元素有哪些?CSS的盒模型?
块级元素:div p h1 h2 h3 h4 form ul
行内元素: a b br i span input select
Css盒模型:内容,border,margin,padding
5.CSS引入的方式有哪些? link和@import的区别是?
内联内嵌外链导入
区别:同时加载
前者无兼容性,后者CSS2.1以下浏览器不支持
Link支持使用javascript改变样式,后者不可
6.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?
标签选择符类选择符 id选择符
继承不如指定 Id>class>标签选择
后者优先级高
7.前端页面有哪三层构成,分别是什么?作用是什么?
结构层 Html表示层 CSS行为层 js
8.css的基本语句构成是?
选择器{属性1:值1;属性2:值2;……}
9.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?
Ie(Ie内核)火狐(Gecko)谷歌(webkit) opear(Presto)
10.写出几种IE6 BUG的解决方法
1.双边距BUG float引起的使用display
2.3像素问题使用float引起的使用dislpay:inline-3px
3.超链接hover点击后失效使用正确的书写顺序 link visited hover active
4.Ie z-index问题给父级添加position:relative
5.Png透明使用js代码改
6.Min-height最小高度!Important解决’
7.select在ie6下遮盖使用iframe嵌套
8.为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)
11.标签上title与alt属性的区别是什么?
Alt当图片不显示是用文字代表。
Title为该属性提供信息
12.描述css reset的作用和用途。
Reset重置浏览器的css默认属性浏览器的品种不同,样式不同,然后重置,让他们统一
13.解释css sprites,如何使用。
Css精灵把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量
14.浏览器标准模式和怪异模式之间的区别是什么?
盒子模型渲染模式的不同
使用 window.top.document.compatMode可显示为什么模式
15.你如何对网站的文件和资源进行优化?期待的解决方案包括:
文件合并
文件最小化/文件压缩
使用CDN托管
缓存的使用
16.什么是语义化的HTML?
直观的认识标签对于搜索引擎的抓取有好处
17.清除浮动的几种方式,各自的优缺点
1.使用空标签清除浮动 clear:both(理论上能清楚任何标签,,,增加无意义的标签)
2.使用overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)
3.是用afert伪元素清除浮动(用于非IE浏览器)
Javascript
1.javascript的typeof返回哪些数据类型
Object number function boolean underfind
2.例举3种强制类型转换和2种隐式类型转换?
强制(parseInt,parseFloat,number)
隐式(==–===)
3.split() join()的区别
前者是切割成数组的形式,后者是将数组转换成字符串
4.数组方法pop() push() unshift() shift()
Push()尾部添加 pop()尾部删除
Unshift()头部添加 shift()头部删除
5.事件绑定和普通事件有什么区别
6.IE和DOM事件流的区别
1.执行顺序不一样、
2.参数不一样
3.事件加不加on
4.this指向问题
7.IE和标准下有哪些兼容性的写法
Var ev= ev|| window.event
document.documentElement.clientWidth|| document.body.clientWidth
Var target= ev.srcElement||ev.target
8.ajax请求的时候get和post方式的区别
一个在url后面一个放在虚拟载体里面
有大小限制
安全问题
应用不同一个是论坛等只需要请求的,一个是类似修改密码的
9.call和apply的区别
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
10.ajax请求时,如何解释json数据
使用eval parse鉴于安全性考虑使用parse更靠谱
11.b继承a的方法
12.写一个获取非行间样式的函数
function getStyle(obj,attr,value)
{
if(!value)
{
if(obj.currentStyle)
{
return obj.currentStyle(attr)
}
else
{
obj.getComputedStyle(attr,false)
}
}
else
{
obj.style[attr]=value
}
}
13.事件委托是什么
让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
14.闭包是什么,有什么特性,对页面有什么影响
闭包就是能够读取其他函数内部变量的函数。
15.如何阻止事件冒泡和默认事件
canceBubble return false
16.添加删除替换插入到某个接点的方法
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild
17.解释jsonp的原理,以及为什么不是真正的ajax
动态创建script标签,回调函数
Ajax是页面无刷新请求数据操作
常见的H5前端开发岗位面试问题
以下是常见的H5前端开发岗位面试问题分类整理:
基础知识问题
HTML5理解与重要性HTML5是最新HTML标准,新增语义化标签(如<header>、<article>)、多媒体支持(<audio>、<video>)、Canvas绘图、本地存储(localStorage/sessionStorage)等特性。其重要性体现在:
提升SEO效果(语义化标签优化爬虫抓取)
减少对插件依赖(如Flash)
支持跨平台开发(移动端与桌面端统一)
增强离线应用能力(通过Service Worker实现PWA)
CSS常见问题与解决
布局问题:如浮动导致父元素高度塌陷→使用clearfix或Flexbox/Grid布局替代浮动。
响应式适配:媒体查询(@media)覆盖设备差异,结合rem/vw单位实现弹性布局。
浏览器兼容性:通过Autoprefixer自动添加厂商前缀,或使用PostCSS处理CSS新特性降级。
JavaScript异步编程异步编程通过回调函数、Promise、Async/Await解决单线程阻塞问题。
回调地狱:用Promise链式调用或Async/Await替代嵌套回调。
事件循环机制:宏任务(setTimeout、I/O)与微任务(Promise.then)按顺序执行,确保异步代码有序处理。
前端框架与库的作用
React:组件化开发,虚拟DOM提升渲染效率,适合复杂单页应用(SPA)。
Vue:渐进式框架,双向数据绑定简化DOM操作,生态丰富(Vuex、Vue Router)。
jQuery:简化DOM操作与AJax请求,但现代项目逐渐被原生API或框架替代。
前端性能优化经验
资源优化:图片压缩(WebP格式)、代码压缩(Terser)、Tree Shaking删除未使用代码。
加载策略:懒加载(Intersection Observer API)、预加载(<link rel="preload">)、CDN加速静态资源。
缓存策略:Service Worker缓存静态资源,HTTP缓存头(Cache-Control、ETag)控制缓存行为。
项目经验问题
HTML5/CSS/JavaScript应用场景在电商项目中,使用HTML5语义化标签构建商品详情页结构,CSS Grid实现响应式商品列表布局,通过JavaScript监听滚动事件实现懒加载。
技术难题与解决
移动端点击延迟:使用FastClick库或CSS属性touch-action: manipulation消除300ms延迟。
跨域问题:通过CORS配置服务器响应头或JSONP(仅限GET请求)解决。
项目角色与贡献在团队中担任前端负责人,负责制定代码规范(ESLint+Prettier)、搭建Webpack构建流程,并主导核心功能开发(如购物车模块)。
技术更新方式
官方文档学习(如React官方文档、MDN Web Docs)。
实践驱动:通过GitHub开源项目或个人博客复现新技术特性。
社区交流:参与Stack Overflow问答、技术峰会(如JSConf)。
实际问题解决
复杂H5应用性能优化
代码层面:使用React.memo避免不必要的组件重渲染,通过React DevTools分析组件更新链路。
网络层面:启用HTTP/2多路复用,合并请求减少TCP连接数。
渲染层面:虚拟滚动(如react-window)优化长列表渲染性能。
网页输入卡顿解决
防抖/节流:对输入事件(如onInput)使用防抖(debounce)限制触发频率。
Web Worker:将耗时计算(如数据格式化)移至Web Worker线程,避免阻塞主线程。
SPA性能问题处理
代码分割:通过动态import()实现路由级代码分割,减少首屏加载体积。
预加载关键路由:使用<link rel="preload">提前加载即将访问的路由资源。
新技术评估与决策
评估维度:社区活跃度、文档完整性、与现有技术栈兼容性、学习成本。
快速验证:通过Create React App或Vite快速搭建原型,验证技术可行性。
编程和问题解决
编程问题解决案例问题:实现一个无限滚动列表,数据分页加载时出现重复请求。解决策略:
使用Intersection Observer监听滚动容器底部元素可见性。
添加加载状态锁(isLoading),避免重复触发请求。
错误重试机制:请求失败时自动重试3次,超时后显示错误提示。
寻求帮助的途径
官方文档与GitHub Issues:优先查阅框架/库的官方文档或已知问题列表。
搜索引擎:使用精准关键词(如“React useEffect无限循环”)搜索技术博客或Stack Overflow答案。
团队代码审查(Code Review):向资深开发者请教代码设计合理性。
前端工具评价
VS Code:轻量级、插件生态丰富(如ESLint、Prettier集成),支持调试前端与Node.js代码。
Chrome DevTools:Performance面板分析渲染性能,Network面板监控资源加载耗时。
多方案选择策略
基准测试:使用Lighthouse或WebPageTest对比不同方案的性能指标(如FCP、LCP)。
可维护性:评估代码复杂度(如圈复杂度)、注释覆盖率、单元测试通过率。
情境问题
同事代码错误处理
私下沟通:通过代码审查或即时通讯工具指出问题,提供修复建议(如“此处缺少空值检查,可能导致崩溃”)。
示例复现:编写单元测试用例证明错误场景,推动团队修复。
方案被拒后的行动
理解原因:与团队讨论拒绝的具体理由(如技术风险、时间成本)。
优化方案:根据反馈调整设计(如用更轻量的库替代复杂框架),或提供备选方案。
高性能与安全性设计
性能:启用CSP(内容安全策略)防止XSS攻击,使用Subresource Integrity(SRI)校验第三方资源完整性。
安全性:对用户输入进行转义(如textContent替代innerHTML),敏感操作需二次验证(如短信验证码)。
遗留系统迁移策略
分阶段迁移:先迁移静态页面,再逐步重构交互逻辑,保留旧系统作为回滚方案。
自动化测试:编写E2E测试(如Cypress)确保迁移后功能一致性。
紧急用户体验优化
优先级排序:通过用户行为数据(如热力图)定位关键路径(如登录流程)。
快速迭代:采用MVP(最小可行产品)模式,先优化核心功能体验(如减少表单字段)。
java高级开发工程师面试问题汇总
java开发工程师找工作时一般面试和笔试的问题??给点实际的题给不了你得实际答案,不过我这有个本书《应聘时最漂亮的回答!》
应聘时最漂亮的回答!
1、请你自我介绍一下自己好吗?
回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”,企业喜欢有礼貌的求职者。
2、你觉得你个性上最大的优点是什么?
回答提示:沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我在北大青鸟经过一到两年的培训及项目实战,加上实习工作,使我适合这份工作。
3、说说你最大的缺点?
回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌岌可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分,企业喜欢聪明的求职者。
4、你对薪资的要求?
回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。
回答样本一:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。
回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。
回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。
5、你对加班的看法?
回答提示:实际上好多公司问这个问题,并不证明一定要加班,只是想测试你是否愿意为公司奉献。
回答样本:如果工作需要我会义不容辞加班,我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时我也会提高工作效率,减少不必要的加班。
6、如果通过这次面试我们录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办?
回答提示:一段时间发现工作不适合我,有两种情况:①如果你确实热爱这个职业,那你就要不断学习,虚心向领导和同事学习业务知识和处事经验,了解这个职业的精神内涵和职业要求,力争减少差距;②你觉得这个职业可有可无,那还是趁早换个职业,去发现适合你的,你热爱的职业,那样你的发展前途也会大点,对单位和个人都有好处。
7、谈谈你对跳槽的看法?
回答提示:①正常的“跳槽”能促进人才合理流动,应该支持。②频繁的跳槽对单位和个人双方都不利,应该反对。
8、工作中难以和同事、上司相处,你该怎么办?
回答提示:①我会服从领导的指挥,配合同事的工作。②我会从自身找原因,仔细分析是不是自己工作做得不好让领导不满意,同事看不惯。还要看看是不是为人处世方面做得不好,如果是这样的话我会努力改正。③如果我找不到原因,我会找机会跟他们沟通,请他们指出我的不足,有问题就及时改正。④作为优秀的员工,应该时刻以大局为重,即使在一段时间内,领导和同事对我不理解,我也会做好本职工作,虚心向他们学习,我相信,他们会看见我在努力,总有一天会对我微笑的。
9、你对于我们公司了解多少?
回答提示:在去公司面试前上网查一下该公司主营业务。如回答:贵公司有意改变策略,加强与国外大厂的OEM合作,自有品牌的部分则透过海外经销商。
10、最能概括你自己的三个词是什么?
回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释,
11、你的业余爱好是什么?
回答提示:找一些富于团体合作精神的,这里有一个真实的故事:有人被否决掉,因为他的爱好是深海潜水。主考官说:因为这是一项单人活动,我不敢肯定他能否适应团体工作。
12、作为被面试者给我打一下分?
回答提示:试着列出四个优点和一个非常非常非常小的缺点(可以抱怨一下设施,没有明确责任人的缺点是不会有人介意的)。
13、你为什么要离开原来的公司?
回答提示:①回答这个问题时一定要小心,就算在前一个工作受到再大的委屈,对公司有多少的怨言,都千万不要表现出来,尤其要避免对公司本身主管的批评,避免面试官的负面情绪及印象。建议此时最好的回答方式是将问题归咎在自己身上,例如觉得工作没有学习发展的空间,自己想在面试工作的相关产业中多加学习,或是前一份工作与自己的生涯规划不合等等,回答的答案最好是积极正面的。②我希望能获得一份更好的工作,如果机会来临,我会抓住。我觉得目前的工作,已经达到顶峰,即没有升迁机会。
14、你欣赏哪种性格的人?
回答提示:诚实、不死板而且容易相处的人、有“实际行动”的人。
15、你通常如何对待别人的批评?
回答提示:①沈默是金,不必说什么,否则情况更糟,不过我会接受建设性的批评。②我会等大家冷静下来再讨论。
16、怎样对待自己的失败?
回答提示:我们大家生来都不是十全十美的,我相信我有第二个机会改正我的错误。
17、你为什么愿意到我们公司来工作?
回答提示:对于这个问题,你要格外小心,如果你已经对该单位作了研究,你可以回答一些详细的原因,像“公司本身的高技术开发环境很吸引我。”、“我同公司出生在同样的时代,我希望能够进入一家与我共同成长的公司。”、“你们公司一直都稳定发展,在近几年来在市场上很有竞争力。”、“我认为贵公司能够给我提供一个与众不同的发展道路。”这都显示出你已经做了一些调查,也说明你对自己的未来有了较为具体的远景规划。
18、对这项工作,你有哪些可预见的困难?
回答提示:①不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行。②可以尝试迂回战术,说出应聘者对困难所持有的态度——工作中出现一些困难是正常的,也是难免的,但是只要有坚忍不拔的毅力、良好的合作精神以及事前周密而充分的准备,任何困难都是可以克服。
19、如果录用了你,你将怎样开展工作?
回答提示:①如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工作的具体办法。②可以尝试采用迂回战术来回答,如“首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开展工作。”。
分析:这个问题的主要目的也是了解应聘者的工作能力和计划性、条理性,而且重点想要知道细节。如果向思路中所讲的迂回战术,面试官会认为回避问题,如果引导了几次仍然是回避的话,此人绝对不会录用了。
20、你希望与什么样的上级共事?
回答提示:①通过应聘者对上级的“希望”可以判断出应聘者对自我要求的意识,这既上一个陷阱,又是一次机会。②最好回避对上级具体的希望,多谈对自己的要求。③如“做为刚步入社会的新人,我应该多要求自己尽快熟悉环境、适应环境,而不应该对环境提出什么要求,只要能发挥我的专长就可以了。
分析:这个问题比较好的回答是,希望我的上级能够在工作中对我多指导,对我工作中的错误能够立即指出。总之,从上级指导这个方面谈,不会有大的纰漏。
21、与上级意见不一时,你将怎么办?
回答提示:①一般可以这样回答“我会给上级以必要的解释和提醒,在这种情况下,我会服从上级的意见。”②如果面试你的是总经理,而你所应聘的职位另有一位经理,且这位经理当时不在场,可以这样回答:“对于非原则性问题,我会服从上级的意见,对于涉及公司利益的重大问题,我希望能向更高层领导反映。”
分析:这个问题的标准答案是思路①,如果用②的回答,必死无疑。你没有摸清楚改公司的内部情况,先想打小报告,这样的人没有人敢要。
22、为什么选择我们公司?
回答提示:曾经在报章杂志看过关于贵公司的报道,与自己所追求的理念有志一同。而贵公司在业界的成绩也是有目共睹的,而且对员工的教育训练、升迁等也都很有制度。
分析:去面试前先做功课,了解一下该公司的背景,让对方觉得你真的很有心想得到这份工作,而不只是探探路。
23、谈谈如何适应办公室工作的新环境?
回答提示①办公室里每个人有各自的岗位与职责,不得擅离岗位。②根据领导指示和工作安排,制定工作计划,提前预备,并按计划完成。③多请示并及时汇报,遇到不明白的要虚心请教。④抓间隙时间,多学习,努力提高自己的政治素质和业务水平。
24、除了本公司外,还应聘了哪些公司?
回答提示:很奇怪,这是相当多公司会问的问题,其用意是要概略知道应徵者的求职志向,所以这并非绝对是负面答案,就算不便说出公司名称,也应回答“销售同种产品的公司”,如果应聘的其他公司是不同业界,容易让人产生无法信任的感觉。
25、你还有什么问题要问吗?
回答提示:企业的这个问题看上去可有可无,其实很关键,企业不喜欢说“没问题”的人,因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。
26、如果你被录用,何时可以到职?
回答提示:大多数企业会关心就职时间,最好是回答“如果被录用的话,到职日可按公司规定上班”,但如果还未辞去上一个工作、上班时间又太近,似乎有些强人所难,因为交接至少要一个月的时间,应进一步说明原因,录取公司应该会通融的。
应聘JAVA工程师,面试官常问一些什么问题?如果你幸运,能找个好点的开发工作,我相信大家一定关心的是:1、数据库2、操作系统,linux,unix?3、开发工具4、你的项目经验不过如果你是应届的,这些都没啥意义,我面试应届生的话,啥都不用问,就看你的态度,你最高能到什么水平,我觉得我都有数,用不着问。
java软件工程师通常面试都提问什么?三个问题必问:
1,你对薪资要求多少?
2,为什么会选择本公司?
3,你对本公司还有想要了解的内容吗?
其它问题就是叫你谈做过什么项目,擅长前台还是后台,前台熟悉哪些技术等等。
越想要你,问得就越详细。三两句话就结束话题,肯定没戏。为了压工资,还会专门挑些冷僻的问题。
记得,信心最重要,尤其是要工资的时候,绝对不松口!不然会被认为技术底气不足。
面试java开发工程师一般会提什么问题首先都是问工作经历,上一家公司的工作情况(应届生会问些学校表现、毕业设计之类的)。然后问些技术问题,JAVA基础的概念,线程、并发、网络、文件操作、数据库操作之类等等。学习java推荐选择千锋教育,千锋教育拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。
java开发工程师的就业方向有:
1.Android开发
Android是世界上最大的智能手机操作系统。根据Strategyalytics的最新研究报告,2016年第三季度全球智能手机出货量达到3.75亿台。Android操作系统获得了创纪录的88%全球市场份额,挤压了苹果IOS等平台。Java是Android应用的主要开发语言。
2.web开发
Web开发语言很多,Java就是其中之一。Java在开发高访问、高并发、集群的大型网站方面有很大的优势,比如去哪儿网、美团等。
3.客户端开发
Java客户端开发主要针对政府、事业单位和大型企业,如医疗、学校、OA、邮箱、投票、财务、考试、物流、矿山等信息系统。然而,客户端开发只是为了帮助自己企业的主营业务。
想要了解更多关于java的相关信息,推荐咨询千锋教育。千锋教育成立教研学科中心,推出贴近企业需求的线下技能培训课程。课程包含HTML5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训、区块链培训、影视剪辑包装培训、游戏原画培训、全媒体运营培训。
Java高级软件工程师会面试哪些问题如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对Java高级开发工程师职位的考核纲要,希望可以帮助到需要的人。
1Java基础
1.1Collection和Map
(1)掌握Collection和Map的继承体系。
(2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、TreeMap、HashTable的特点和实现原理。
(3)掌握CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的实现原理和适用场景。
1.2IO
(1)掌握InputStream、OutputStream、Reader、Writer的继承体系。
(2)掌握字节流(FileInputStream、DataInputStream、BufferedInputStream、FileOutputSteam、DataOutputStream、BufferedOutputStream)和字符流(BufferedReader、InputStreamReader、FileReader、BufferedWriter、OutputStreamWriter、PrintWriter、FileWriter),并熟练运用。
(3)掌握NIO实现原理及使用方法。
1.3异常
(1)掌握Throwable继承体系。
(2)掌握异常工作原理。
(3)了解常见受检异常(比如FileNotFoundException)、非受检异常(比如NullPointerException)和错误(比如IOError)。
1.4多线程
(1)掌握Executors可以创建的三种(JAVA8增加了一种,共四种)线程池的特点及适用范围。
(2)掌握多线程同步机制,并熟练运用。
1.5Socket
(1)掌握Socket通信原理。
(2)熟练使用多线程结合Socket进行编程。
2Java虚拟机
2.1JVM内存区域划分
(1)掌握程序计数器、堆、虚拟机栈、本地方法栈、方法区(JAVA8已移除)、元空间(JAVA8新增)的作用及基本原理。
(2)掌握堆的划分:新生代(Eden、Survivor1、Survivor2)和老年代的作用及工作原理。
(3)掌握JVM内存参数设置及调优。
2.2类加载
(1)掌握类的加载阶段:加载、链接(验证、准备、解析)、初始化、使用、卸载。
(2)掌握类加载器分类及其应用:启动类加载器、扩展类加载器、应用程序类加载器、自定义加载器。
3J2EE
(1)掌握JSP内置对象、动作及相关特点和工作原理。
(2)掌握Servlet的特点和工作原理。
(3)掌握Spring框架的IOC和AOP实现原理(反射和动态代理)。
(4)至少掌握一个MVC框架(SpringMVC,Struts等)的工作原理,并熟练运用。
(5)至少掌握一个ORM框架(Hibernate,MyBatis等)的工作原理,并熟练运用。
4数据结构与算法
(1)掌握线性表和树的特点并熟练运用。
(2)掌握常用排序和查找算法:插入排序(直接插入排序、希尔排序)、选择排序(直接选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序,顺序查找、二分查找、哈希查找。
(3)熟练运用常见排序和查找算法思想解决编程问题。
(4)了解几大基本算法:贪心算法、分治策略、动态规划。
5计算机网络
(1)掌握网络的分层结构,及每层的功能特点。
(2)掌握TCP/IP的通信原理(三次握手、四次挥手)
6数据库
(1)掌握复杂的SQL语句编写。
(2)掌握数据库的优化(SQL层面和表设计层面)。
(3)至少掌握一款数据库产品。
(4)熟悉高并发、大数据情况下的数据库开发。
7Web技术
(1)掌握AJAX的工作原理。
(2)至少熟悉一款JS框架(比如JQuery)。
8设计模式
(1)熟悉常见的设计模式。
(2)会将设计模式理论应用到实际开发中。
9Linux
(1)熟练运用Linux常见命令。
(2)熟悉Linux操作系统基本概念及特点。
(3)熟悉Shell脚本。
10操作系统
(1)掌握操作系统的进程管理。
(2)了解操作系统的I/O。
11正则表达式
(1)掌握常见正则表达式符号。
(2)熟练运用正则表达式解决实际问题(比如匹配电话号码、邮箱、域名等)。
好了,文章到此结束,希望可以帮助到大家。