BAT前端+Java继承面试笔试题(含详细答案解析)_第1页
BAT前端+Java继承面试笔试题(含详细答案解析)_第2页
BAT前端+Java继承面试笔试题(含详细答案解析)_第3页
BAT前端+Java继承面试笔试题(含详细答案解析)_第4页
BAT前端+Java继承面试笔试题(含详细答案解析)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BAT前端+Java继承面试笔试题(含详细答案解析)第一部分:BAT前端经典笔试题(含详细解析)本套试题贴合BAT一线前端面试基础考点,涵盖JS核心、DOM、异步、闭包、原型、ES6等高频知识点,题型贴合真实校招、社招笔试场景。一、单项选择题(共5题)1.以下关于JavaScript变量提升的说法正确的是()A.var、let、const都存在变量提升B.let和const存在变量提升,存在暂时性死区C.只有var存在变量提升,let/const无提升D.所有变量声明都不存在提升答案:B解析:JS中所有变量声明都会提升,其中var声明的变量提升后默认赋值为undefined,无暂时性死区;let、const声明的变量提升后未初始化,形成暂时性死区,在声明前访问会直接报错,而非undefined。日常面试高频误区是认为let/const没有提升,实际是存在提升但受暂时性死区限制。2.下列代码的输出结果是()PlainText

console.log(a);

vara=10;

functiona(){}

console.log(a);A.undefined10B.函数a10C.1010D.报错答案:B解析:JS提升优先级:函数声明>var变量声明。首先函数a被提升并初始化,第一个打印输出函数a;随后执行赋值操作a=10,变量覆盖函数,第二个打印输出10。var声明的重复变量会被忽略,不影响代码执行。3.以下不属于JavaScript原始数据类型的是()A.SymbolB.BigIntC.nullD.Array答案:D解析:JS原始数据类型共7种:String、Number、Boolean、Undefined、Null、Symbol、BigInt。Array、Object、Function均为引用类型,不属于原始类型。4.关于闭包的描述,错误的是()A.闭包可以让函数内部变量常驻内存B.闭包会造成一定的内存占用问题C.闭包无法实现变量私有化D.内层函数访问外层函数的变量,就形成了闭包答案:C解析:闭包的核心作用之一就是实现变量私有化,外部无法直接访问函数内部变量,只能通过闭包暴露的方法操作。同时闭包会保留作用域,导致变量不会随函数执行完毕销毁,长期滥用会造成内存堆积。5.Promise三种状态不包含以下哪种()A.pendingB.resolveC.fulfilledD.rejected答案:B解析:Promise标准状态仅有三种:pending(等待中)、fulfilled(成功)、rejected(失败)。resolve、reject是修改状态的方法,并非状态名称,属于面试高频易错点。二、填空题(共3题)1.异步JS的执行机制是________,宏任务和微任务的执行顺序是________。答案:事件循环(EventLoop);先执行所有微任务,再执行一轮宏任务解析:浏览器EventLoop核心规则:同步代码优先执行,同步执行完毕后清空所有微任务队列,再执行一个宏任务,之后循环往复。常见微任务:Promise.then、async/await、queueMicrotask;常见宏任务:setTimeout、setInterval、AJAX。2.ES6中定义常量的关键字是________,定义块级作用域变量的关键字是________和________。答案:const;let、const解析:var仅支持函数作用域和全局作用域,let、const严格支持块级作用域,const声明的变量不可修改赋值,用于定义常量。3.原型链的顶端是________,所有引用类型的默认原型都是________。答案:null;Ototype解析:所有对象最终都会指向Ototype,而Ototype.__proto__的值为null,构成完整的原型链闭环。三、简答题(共2题)1.说说var、let、const的区别?答案解析:1.作用域:var为函数/全局作用域,存在变量穿透问题;let、const为块级作用域,有效解决变量穿透。2.变量提升:var提升后初始化为undefined;let、const提升但存在暂时性死区,声明前访问报错。3.重复声明:var允许重复声明;let、const禁止同一作用域重复声明。4.赋值规则:var、let可重复赋值;const声明后不可修改引用地址(基础类型值不可变,引用类型属性可修改)。2.简单说说异步和同步的区别,以及前端为什么需要异步?答案解析:同步:代码从上到下依次执行,上一段代码执行完毕后,才会执行下一段,会阻塞后续代码执行。异步:代码执行不会等待耗时操作完成,直接执行后续代码,耗时操作完成后通过回调、Promise等方式回调执行结果。前端需要异步的核心原因:JS是单线程语言,若网络请求、定时器、文件操作等耗时操作为同步,会阻塞页面渲染、用户交互,导致页面卡顿、卡死,异步机制可以完美解决单线程阻塞问题,提升页面体验。四、编程题(1题)题目:实现一个防抖函数,触发后延迟500ms执行,多次触发重新计时答案代码:PlainText

functiondebounce(fn,delay=500){

lettimer=null;

returnfunction(...args){

//每次触发清除之前的定时器

if(timer)clearTimeout(timer);

//重新开启定时器

timer=setTimeout(()=>{

fn.apply(this,args);

timer=null;

},delay);

}

}解析:防抖核心逻辑为“频繁触发只执行最后一次”,通过闭包保存定时器标识,每次触发事件清空上一次定时器,实现重新计时,适配输入框搜索、窗口resize等高频场景。第二部分:Java继承经典笔试题(含详细解析)本套试题聚焦Java继承核心考点,包含继承特性、重写与重载、super关键字、向上转型、多态等面试必考知识点,适配Java基础面试笔试。一、单项选择题(共6题)1.关于Java继承的说法正确的是()A.Java支持多继承B.子类可以继承父类的所有构造方法C.子类可以继承父类的public、protected修饰的成员D.私有方法可以被子类重写答案:C解析:Java类仅支持单继承,接口支持多实现;构造方法不能被继承,仅能通过super调用;父类private私有成员无法被子类继承和访问;私有方法不能被重写,仅能被子类隐藏。2.以下关于方法重写(override)和重载(overload)的区别,说法错误的是()A.重写发生在父子类之间,重载发生在同一个类中B.重写方法名、参数列表必须完全一致C.重载方法返回值必须一致D.重写可以实现多态,重载不涉及多态答案:C解析:方法重载的核心是“同名不同参”,只要求方法名相同、参数列表(个数、类型、顺序)不同,返回值、修饰符不做限制。重写要求方法名、参数列表、返回值(协变返回)一致,访问权限不能严于父类。3.子类构造方法的执行顺序正确的是()A.子类构造代码块-父类构造方法-子类构造方法B.父类静态代码块-子类静态代码块-父类构造-子类构造C.子类构造优先于父类构造执行D.静态代码块每次创建对象都会执行答案:B解析:Java继承对象初始化固定顺序:父类静态代码块→子类静态代码块(仅首次加载类执行一次)→父类构造代码块→父类构造方法→子类构造代码块→子类构造方法。静态资源随类加载执行,只执行一次。4.super关键字不能使用的场景是()A.调用父类构造方法B.调用父类普通成员方法C.静态方法中调用superD.访问父类成员变量答案:C解析:super代表父类对象实例,属于对象级别的关键字;静态方法属于类级别,加载时无需创建对象,因此静态方法、静态代码块中禁止使用super、this关键字。5.关于向上转型说法正确的是()A.子类引用指向父类对象B.向上转型后只能调用父类原有方法,无法调用子类独有方法C.向上转型必须强制转换D.向上转型后子类重写的方法不会生效答案:B解析:向上转型:父类引用指向子类对象,属于自动转换,无需强制转型;转型后会遵循编译看左边、运行看右边的规则,重写的方法执行子类逻辑,但无法调用子类独有的扩展方法。6.下列哪个关键字可以阻止类被继承()A.privateB.staticC.finalD.abstract答案:C解析:final修饰类时,类不可被继承;final修饰方法,方法不可被重写;final修饰变量,变量不可二次赋值。abstract修饰抽象类,只能被继承、不能实例化。二、填空题(共3题)1.Java中子类继承父类使用的关键字是________,接口实现使用________关键字。答案:extends、implements2.方法重写的原则:________一致、________一致,访问权限________父类。答案:方法名、参数列表、大于等于(不严于)3.Java中所有类的直接或间接父类是________。答案:java.lang.Object三、简答题(共2题)1.简述继承的优缺点?答案解析:优点:1.提高代码复用性,父类通用代码可被多个子类复用,避免重复编码;2.提高代码扩展性,子类可在父类基础上扩展新功能;3.为多态特性提供基础,优化程序设计结构。缺点:1.增强了类之间的耦合度,父类修改后,所有子类都会受影响;2.破坏类的封装性,父类内部实现会暴露给子类。2.谈谈你对Java多态的理解,以及多态的实现条件?答案解析:多态是面向对象三大特性之一,指同一个行为,不同子类实现出不同的效果,核心实现逻辑为编译类型和运行类型不一致。多态实现必备三个条件:1.存在继承关系(子类继承父类);2.子类重写父类的核心方法;3.父类引用指向子类对象(向上转型)。多态的核心优势:降低代码耦合,提高程序扩展性,新增子类无需修改原有核心代码。四、编程题(1题)题目:定义父类Animal,包含eat()方法,定义子类Dog、Cat重写eat方法,实现多态调用答案代码:PlainText

//父类

classAnimal{

publicvoideat(){

System.out.println("动物进食");

}

}

//子类Dog

classDogextendsAnimal{

@Override

publicvoideat(){

System.out.println("狗狗吃骨头");

}

}

//子类Cat

classCatextendsAnimal{

@Override

publicvoideat(){

System.out.println("猫咪吃鱼");

}

}

//测试类

publicclassTe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论