百度Java岗2017编程题通俗解析

Java中域名、网站名、网址等区别 一、域名 域名是互联网中出现频率比较高的一个词汇,什么是域名呢?域名(Domain Name)。虽然我们可以直接通过IP地址来访问WWW上的每一台主机,但是由32比特的二进制代码组成的IP地址非常难记,为了便于记忆,按照一定的规则给Internet上的计算机起的名字就叫做域名。 如果有人想要访问您的网站,就必须输入域名。一般计算机通过IP地址传达这个请求,IP地址类似于123.457.69.0... 阅读详情

前言

刚刚参加完百度的网上笔试,编码部分主要考察对递归函数的运用和数理逻辑(离散、线代的内容为主,学完早都还给老师了有木有哭)。

编码题有三题,我在这里会尽量通俗地解析题目,希望能帮助到想去百度发展的童鞋们。

题目

No.1

为了进程城市规划,需要计算居民区的住宅数目。该区域是一个n*m的网格,如果有屋顶则为1,如果是空地则为0.有1组成的相邻网格单元组成的簇为一个单独住宅。对角为1不算相邻。

 输入:图,由0,1表示
 输出:住宅总数。

这题的考点主要是考四连通图:即验证一个节点是否向上下左右四个方向连通。根据本题题意,我们可以假设,当节点在上下左右四个方向上任意一个相邻节点的权值为1,则认为节点在该方向连通,反之认为不连通。

public class Test1{
public static int countHomes(int[][] grid){
int returnVal=0;

for (int n = 0; n < grid.length; n++)
{
for (int m = 0; m <grid[0].length;m++)
{
//如果当前权值为1,就进行递归访问,否则不访问
if (grid[n][m] == 1)
{
returnVal++;
dfs(grid, n, m);

//当递归结束后,以grid[n][m]为起点开始递归整个连通图(即房屋簇)都被标记为0,属于它的任何一个节点都不会进入下次递归

//为方便理解,输出每次递归完一个连通图后,整个网格图的变化情况

for (int i = 0; i < grid.length; i++)
{
for (int j = 0; j <grid[0].length;j++)
{
System.out.print(grid[i][j]+" ");
}
System.out.println("");
}
System.out.println("房屋总数:"+returnVal);
}
}
}
return returnVal;
}
public static void dfs(int[][] matrix,int n,int m){

//为避免数组下标越界,如果是在网格边缘上的节点直接返回

if (n < 0 || n > matrix.length - 1 || m < 0 || m > matrix[0].length - 1)
return;

//递归直到本连通图中所有节点权值都为0返回

if (matrix[n][m] == 0)
return;
else
{

matrix[n][m] = 0;

//对于每个节点都往上下左右四个方向递归,测试是否连通

dfs(matrix, n + 1, m);

dfs(matrix, n - 1, m);
dfs(matrix, n, m - 1);
dfs(matrix, n, m + 1);
}
}

//测试

public static void main(String[] args){
countHomes(new int[][]{{0,0,1,0,1},{0,1,0,1,1}});
}
}


No.2

构建一个增量矩阵,求该矩阵和它的转置矩阵相乘得到的矩阵.

 输入:初始值,行数,列数
 输出:乘积矩阵。

这题的考点主要是矩阵乘法,没有什么好说。

public class Test2 {

public static int[][] getResult(int initVal,int rows,int cols){
//得到增量矩阵
int[][] resultm=new int[rows][cols];
for(int i=0;i<rows;i++){
for(int j=0;j<cols;j++){
resultm[i][j]=initVal;
initVal++;
}
}
return MultiMatrix(resultm, reverse(resultm));
}
//求矩阵的转置矩阵
public static int[][] reverse(int[][] s){
int[][] r=new int[s[0].length][s.length];
for(int i=0;i<s[0].length;i++){
for(int j=0;j<s.length;j++){
r[i][j]=s[j][i];
}
}
return r;
}
//进行矩阵乘法运算
static int[][] MultiMatrix(int[][] a,int[][] b){

int c[][] = new int[a.length][b[0].length];

int x,i,j;
for(i = 0;i<a.length ;i++)
{
for(j = 0;j<b[0].length;j++)
{
int temp = 0;
for(x = 0;x<b.length;x++)
{
temp+=a[i][x]*b[x][j];

}
c[i][j] = temp;

}
}
return c;
}
//测试
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] result=getResult(1, 3, 3);
for(int i=0;i<result.length;i++){
for(int j=0;j<result[0].length;j++){
System.out.print(result[i][j]+" ");
}
System.out.println("");
}
}

}

No.3

求一个二叉树的最优(权值最小)路径.

 输入:二叉树
 输出:最优路径的权值。

这题的考点主要是运用递归函数遍历二叉数,我使用了深度遍历。

//二叉数类

public class TNode {
    public int value;
    public TNode leftNode;
    public TNode rightNode;
}

public class TNodeTest {
public static int getMinPathVal(TNode t){
int sum=0;
sum+=t.value;
if(t.leftNode!=null&&t.rightNode!=null){
if(t.leftNode.value<t.rightNode.value){
sum+=getMinPathVal(t.leftNode);
}
else{
sum+=getMinPathVal(t.rightNode);
}
}
else{
if(t.leftNode==null&&t.rightNode!=null){
sum+=getMinPathVal(t.rightNode);
}
else if(t.leftNode!=null&&t.rightNode==null){
sum+=getMinPathVal(t.leftNode);
}
else{
System.out.println("遍历到叶子");
}
}
return sum;
}

//测试
public static void main(String[] args) {
// TODO Auto-generated method stub
TNode t=new TNode();
t.value=5;
t.leftNode=new TNode();
t.rightNode=new TNode();
t.leftNode.value=10;
t.rightNode.value=20;
t.leftNode.leftNode=new TNode();
t.leftNode.leftNode.value=60;
System.out.println(getMinPathVal(t));
}

}

2020百度Java工程师机考编程题 题目大意 牛牛和牛妹面前的桌子上有一个树状棋盘,棋盘由1~N个节点组成,其中,第1个节点是白色,第N个节点是黑色,剩余节点为无色,牛牛执白色,牛妹执黑色,牛牛先手; 每一步,牛牛可以选择一个白色节点,然后将该白色节点周围的一个无色节点涂成白色,牛妹可以选择一个黑色节点,然后将黑色节点周围的一个无色节点涂成黑色;当某人无法涂色(例如所有白色节点盘没有无色节点时),另一人获胜,现在要你判断谁能够获胜,如果牛牛获胜则输出“niuniu”,反之则输出“niumei”。 输入: 第一行为两个整数N和M分别代表节点数和节点中的连接数; 接下来N行,每行两个整数,表示这两个节点互相连接 测试用例: 7 6 立即下载

相关推荐

百度飞桨+文心大模型实战:生成式AI工程师认证备考全攻略(含真题解析)

本文详细解析百度飞桨与文心大模型结合的生成式AI工程师认证备考策略,涵盖认证体系、学习路径、核心技能突破及真题分析。帮助开发者掌握大模型原理、飞桨平台操作和文心大模型应用,高效通过工信部与百度联合认证考试。

loss4bartender的博客 686

百度Java岗一面+二面内容,java架构师面试资料_java外包一面是技术面二面是什么面(1)

做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务本文已被。

2401_84103844的博客 1114

Redis+QMT实战:如何用Stream模式实现聚宽策略的毫秒级跟单(附完整代码)

本文详细介绍了如何利用Redis Stream模式构建一个低延迟、高可靠的量化交易信号中继系统,实现从聚宽策略到本地QMT的毫秒级跟单。通过对比传统方案,解析了Redis Stream在消息持久化、消费组和显式确认方面的核心优势,并提供了完整的架构设计思路与核心代码实现,帮助量化开发者解决云端策略信号稳定传递至本地实盘的难题。

weixin_29280657的博客 478

百度校招历年经典面试题汇总:Java开发岗

这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 这个系列离结束差的还特别多,会更新涵盖所有一线大厂的所有岗位,也可以关注一下。 百度校园招聘历年经典面试题汇总:C++研发岗 最容易进的大厂工作,百度经典百题 超经典,百度最爱考的安卓Android百题 超经典,阿里巴巴历年高频面试题汇总:前端岗 阿里巴巴历年经典面试题汇总:Java岗 学姐百度实习面经 学姐,来挑战字节最牛部门 最强阿里巴巴历年经典面试题汇总:C++研发岗 关于我的那些面经——百..

少说,多做。 9854

数据仓库数据质量监控和处理方法最佳实践

指的是检查数据是否存在反常或者错误的情况,例如数值反常地过大或者过小,或者超过记录的波动值,对应的规则包括数值波动检查,最大值、最小值检查,跨表准确性等。指的是检查数据是否存在缺失的情况,这里的缺失可以是整个数据集的记录缺失,也可以是某个字段记录的缺失,对应的规则包括空值检查,表总行数检查。指的是检查数据是否符合规范,是否按照规定的格式存储,对应的规则包括正则表达式检查,字段长度检查,枚举集合检查,数值范围等。指的是检查哪些数据是重复数据或者数据的哪些属性是重复的,对应的规则例如主键唯一性检查。

大模型大数据攻城狮的专栏 899

ubuntu linux虚拟机安装部署openclaw详细教程(安装、问题处理)

本文详细介绍了在Ubuntu系统下安装OpenClaw AI助手的完整流程及常见问题解决方案。主要内容包括:1) 通过GIT、Node.js等基础环境配置;2) 使用官方脚本或源码编译两种方式安装OpenClaw;3) 配置向导中的关键选项说明;4) 针对systemctl服务启动失败等常见错误的处理方法。文章特别强调了权限管理、网络依赖和访问配置等易错环节,提供了修改service文件等具体解决方案,帮助开发者顺利完成部署并实现Web UI访问。教程实操性强,适合本地和云服务器环境部署参考。

少说,多做 2034

百度Java面试题前200页都在这里了

操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 ACIDBS与CS的联系与区别Cookie 和 Session的区别fail-fast 与 fail-safe 机制有什么区别get 和 post请求的区别Interface 与 abstract 类的区别IOC的优点是什么IO 和 NIO的区别,NIO优点Java 8 / Java 7 为我们提供了什么新功能什么是竞态条件? 举个例子说明。JRE、JDK、JVM 及 JI

weixin_70730532的博客 301

思远耳机充电芯片-SY5501

BES2700ZP-本文档介绍了思远耳机充电芯片SY5501的使用方法,包括芯片引脚功能说明(VCC、IRQ、RST等)、通信机制(VIN引脚的双重作用)以及相关注意事项。提供了代码片段、调试日志和电路图作为参考,并列出了待解决的问题清单。该芯片需要配合特定充电仓使用,支持私有协议和用户自定义通信功能。

云淡风轻 126

java 如何爬取百度百科词条内容(java如何使用webmagic爬取百度词条)

这是老师所布置的作业 说一下我这里的爬去并非能把百度词条上的内容一字不漏的取下来(而是它分享链接的一个主要内容概括...)(他的主要内容我爬不到 也不想去研究大家有好办法可以call me) 例如 互联网+这个词汇 我这里爬的解释为 中文【互联网+_百度百科】“互联网+”是创新2.0下的互联网发展的新业态,是知识社会创新2.0推动下的互联网形态演进及其催生的经济社会发展新形态。“互联网+”...

weixin_30347009的博客 463

Spring AI 实战(11):收官!10 道面试高频题 + 一张脑图带走全系列

本文是Spring AI系列的收官篇,通过知识脑图梳理前10篇内容,提供面试高频题和避坑清单。主要内容包括: 知识脑图:分6层(核心抽象、输入增强、输出控制等)总结Spring AI全栈技术。 10道高频面试题:涵盖ChatClient/ChatModel关系、结构化输出、RAG链路等核心知识点。 避坑清单:列出9条常见问题及解决方案,如向量维度匹配、Advisor顺序等。 技术对比:分析Spring AI、LangChain4j和Spring AI Alibaba的差异与适用场景。 使用建议:提供面试复习

不才不才不不才的博客 296

UG\NX二次开发 分割曲线

分割曲线没有ufun函数?那就换一种思路实现。

王牌飞行员_里海的博客 1149

2021百度Android岗面试真题收录解析,专题解析

何为成长?成长是指自我提升,一方面是本身的个人能力,另一方面是社会对你的认可度。最终,程序员的职位和薪水都能在成长中得以体现。 很多人对成长有误解,在他们眼中,随着工作年限的提高,成长是理所当然的事情,这其实是一个误区。两个程序员同时工作3年,难道他们两个的成长就完全一样吗?其实是不一样的。很多岗位在招聘的时候都要求3年以上工作经验,这个3年工作经验是指持续成长的三年,而不是指浑浑噩噩混日子的三年。下面举个通俗易懂的例子,大家一定能理解。 笔记内容概要 一、架构师必备Java基础 1、深入理解Java.

m0_52308677的博客 205

【Kubernetes】Kubernetes 安全沙箱深度对比:gVisor vs Kata Containers

Kubernetes安全沙箱深度对比:gVisor和Kata Containers在架构、性能与安全性方面各有特点。gVisor通过用户态内核(Sentry)实现软件隔离,启动快(毫秒级)但CPU开销大(20-30%),适合Web服务等场景。Kata Containers采用轻量级虚拟机提供硬件级隔离,启动较慢(1-2秒)但兼容性更好,适合金融等高安全需求。测试显示gVisor在动态请求下性能下降33%,而Kata性能接近原生。建议根据场景选择:多租户/快速启动用gVisor,敏感数据/极致安全用Kata,

九师兄 178

baidu云存储java sdk源码阅读之实体分析

        接下来我们来看bcs里面的实体对象。在介绍这个之前,我们首先来看一下bcs api都可以干什么。从官方文档我们可以看到,有三类api,分别是针对bucket的,针对object的,针对acl操作类的。   云存储Bucket可以看成是命名空间,开发者上传的任何数据必须是属于某个Bucket。上传任何数据之前请先确认是否已经创建Bucket,有关Bucket命名限制请参考约束...

勤奋的asialee的博客 204

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【工作经验分享】2021百度Java岗面试真题收录解析,成功跳槽阿里!

前言 JVM对实际简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以及弄清楚JVM的工作原理,其实我个人认为这块还是非常有必要去认真了解及学习的,特别是刚入门或入门不久的Java开发来说,这是Java的基石。 其次,从各大招聘平台来看,一线互联网企业招聘需求(尤其是阿里巴巴),第一条就明确了要掌握JVM原理,因为JVM是中高级程序员必须要掌握的技术,学JVM也是为了更深入地理解Java以及更好的解决线上排查问题。 网上

m0_57541165的博客 109

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java面向对象最全入门笔记(通俗易懂,适合初学者)

一、为什么使用面向对象 前言: 面向对象的三大特征 封装 (Encapsulation) 继承 (Inheritance) 多态 (Polymorphism) 编程思想: 面向过程:做某件事情都需要自己亲历亲为,按照步骤去完成 面向对象:做某件事情不需要自己亲历亲为,只需指定特定的对象去完成即可。 1.现实世界就是由对象组成的,如下图,万物皆对象(不是单指女朋友也不是单指男朋友哈~) 2.面...

javaboy_yl 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

什么是EJB?通俗易懂。。。

到底EJB是什么?被口口相传的神神秘秘的,百度一番,总觉得没有讲清楚的,仍觉得一头雾水。百度了很久,也从网络的文章的只言片语中,渐渐有了头绪。   用通俗话说,EJB就是:"把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了"。是的,没错!EJB 就是将那些"类"放到一个服务器上,用C/S 形式的软件客户端对服务器上的"类"进行调用。快崩溃了吧!这...

weixin_40412301的博客 934

百度云Java三面,面试题及答案!

作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人百度云java社招一面面经与个人总结1、首先是项目部分,问的比较细。这部分没什么参考价值,忽略。2、如果一个对象有多个方法加了...

架构师小秘圈 1322

关于java解析bvh动作文件

网上找了一下没有一个完整的bvh解析示例,故做了一个java的实现,虽然是安卓平台的但解析过程是没用到安卓api的,java又有原生opengl支持,稍作修改即可变成纯java版的,只是速度有点不给力。 如果用c语言也许解析速度快一些但我没有写,但思路是一样的。

a563501734的博客 2292

百度地图API Android SDK 常见问题

百度地图API Android SDK 常见问题

gfdhjf的博客 368

Java九大排序通俗易懂

本篇内容参考百度经验,为了帮助更多有需要的人 文章目录本篇内容参考百度经验,为了帮助更多有需要的人1.选择排序(selection Sort)2.冒泡排序(Bubble Sort)3.希尔排序(Shell Sort)---插入排序的优化4.快速排序(Quick Sort)5.归并排序(Merge Sort)6.堆排序(Heap Sort)7.基数排序(Radix Sort)8.树排序(Tree Sort)9.插入排序(Insert Sort) 1.选择排序(selection Sort) 算法描述: Ste

墨迹 366

可能是最通俗的阐述 java到底是值传递还是引用传递

啥也不说上来先看一下总结: 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。 一个方法可以改变一个对象参数的状态。 一个方法不能让对象参数引用一个新的对象。 针对这3条,我们先来看几个demo。 输出:是5,不是6。这其实就说明传递的是值,也就是你只是拿着我的副本,随便你玩,你大爷还是你大爷。 输出:0。为啥不是1呢?刚才你不是说传递的是副本嘛随便我怎么玩,这回怎么把我的原件给改了啊?...

HmmmRain的博客 186

java爬虫利器Jsoup的使用

本次分享将实现的功能为:利用Jsoup爬取某个搜索词语的百度百科的介绍部分,之前的很多爬虫文章都是分享的使用Python进行爬取,所以这次我们将用Java来做爬虫。网络请求,jsoup封装了http请求所涉及的几乎所有api,在Jsoup.connect()方法返回的对象Connection对象中,封装了http请求的常见操作。Jsoup如此强大的关键在于Jsoup对常用的api做了很好的封装,并且通俗易懂,小白上手也很快,下面就主要介绍下常用的对象及API,

Z_suger7的博客 610

html页面是如何解析的,如何解析一个HTML

看到标题,你会猜到这篇文章要讲的内容吗?你可能猜到了,就是爬虫相关的内容。爬虫最重要的流程就是抽取页面数据,通俗的讲法就是解析数据如何解析一个HTML页面,我认为最简单的方式之一就是使用jsoup。1.什么是jsoupWechatIMG307.pngjsoup 是一款基于Java类库开发的HTML解析器,它提供了一套非常方便的API用户HTML页面数据的抽取。可通过DOM,CSS以及类似于JQue...

weixin_39775577的博客 589

java里同步代码块百度百科_java同步方法和同步代码块详解(通俗地讲解)

打个比方:一个object就像一个大房子,大门永远打开。房子里有很多房间(也就是方法)。这些房间有上锁的(synchronized方法),和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想调用该对象方法的线程比喻成想进入这房子某个房间的人。所有的东西就这么多了,下面我们看看这些东西之间如何作用的。在此我们先来明确一下我们的前提条件。该对象至少有一...

weixin_29098391的博客 146
NightRavenReady
博客等级 码龄11年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值