前端百度一面:大厂有表现力的代码

前言

百度一面一般问的问题不会太难,但是我们要把问题答完整,答好,答到面试官的心窝窝里去是有点难度的。OK,现在给你一个情景,你能不能用代码把它描述出来。

情景描述

现在五一演出需要从动物王国中组成一支1000鸭子的合唱团,鸭子有一项技能是唱歌,请你用代码描述出来。

聪明机智的你是不是看到这里觉得这不很简单吗?看我三下五除二秒杀。相信在座的各位不久就能写出如下代码

javascript 复制代码
const choir =[]//合唱团
const duck={//鸭子
	name:'xx',
	sing:function(){//技能,唱歌
		console.log("嘎嘎嘎");
	}
}
for(let i =0;i<1000;i++){
     choir.push(duck);
 }

是不是感觉特别简单,觉得自己写的还不错,但是如果你这么写,那么可能面试官就让你回家等等了。

首先,没有封装的思想,这里我们应该把加入合唱团这个动作封装成一个方法,封装有助于降低复杂性、提高安全性和可维护性,并促进代码的重用。

scss 复制代码
function join(animal){
            choir.push(animal);
            console.log("恭喜加入");
        }
for(let i =0;i<1000;i++){
            join(duck);
        }

但是写出这样的代码还是有问题,是所有动物都能加入合唱团吗?显然不是,我们需要能嘎嘎叫的鸭子,而且我们似乎还没有作非空判断。完善一下如下

javascript 复制代码
function join(animal){
            //严谨性 加入合唱团的要求
            if(animal&&typeof animal.sing==="function"){
                choir.push(animal);
            }
            console.log("恭喜加入");
            }

这个时候我们需求变化一下,全世界只有999只鸭子,但是就是需要1000只能嘎嘎唱歌的鸭子,缺少的一只你应该怎么办?用代码描述并解决。

这个时候你能想到面试官想考你什么呢?其实这个时候我们就应该要想到JS的弱类型,这里我们可以让某一种动物去学嘎嘎叫这项技能,这样就能以假乱真,加入合唱团啦。

javascript 复制代码
const chicken ={
            name:'wm',
            sing:function(){
                console.log("gagaga");
            }
        }
join(chicken);

OK,这样我们就基本完成这道百度面试题啦。

总结

这道题主要考察了我们基本的情景编程能力和封装的思想,还考察了我们的编程习惯,是否会考虑代码的健壮性,JS的基本语言特性等等。

相关推荐
一 乐6 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
xkxnq8 小时前
第二阶段:Vue 组件化开发(第 16天)
前端·javascript·vue.js
Van_Moonlight9 小时前
RN for OpenHarmony 实战 TodoList 项目:空状态占位图
javascript·开源·harmonyos
xkxnq9 小时前
第一阶段:Vue 基础入门(第 15天)
前端·javascript·vue.js
辞砚技术录10 小时前
MySQL面试题——联合索引
数据库·面试
小L~~~10 小时前
绿盟校招C++研发工程师一面复盘
c++·面试
BBBBBAAAAAi10 小时前
Claude Code安装记录
开发语言·前端·javascript
源码获取_wx:Fegn089511 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
Jing_Rainbow11 小时前
【 前端三剑客-37 /Lesson61(2025-12-09)】JavaScript 内存机制与执行原理详解🧠
前端·javascript·程序员
UrbanJazzerati11 小时前
解码数据分布:茎叶图和箱形图初学者指南
面试·数据分析