![e3f958c9e7553d7a939fe9f0aaed0ded.png](https://i-blog.csdnimg.cn/blog_migrate/e140be7f6a631aba0ef5dff9e8c860af.jpeg)
这个是前段时间面的一个公司,加了HR微信,在朋友圈看到他们最近融资了不少,是一个做CS架构的公司,做ERP的,就是财务管理软件,给各大电商平台的商户管理财务和发货信息用的。去面的时候感觉他们公司没有想象的大,不过HR说他们快搬办公地点了,融资成功,当然要大肆招人了。现在还在招,有兴趣的可以面面,前台和HR都不是很漂亮,前台小姐姐不应该都很漂亮吗?
![f0c598bd8fb7d14b96b20f12a6edfe96.png](https://i-blog.csdnimg.cn/blog_migrate/b88b244f6f9c055092d27f9c76dfeb4f.jpeg)
try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会不会执行,什么时候执行?
![8d9e4cd263832edd3d762d3c45a5021f.png](https://i-blog.csdnimg.cn/blog_migrate/78835ed8fdc01b0ccd8ddfdadc26ef78.jpeg)
看上面输出,finally里的code会执行,在try里面的return执行之前执行
Java中的final关键字有哪些作用?
final修饰类时,表明这个类不能被继承
final修饰方法,表明方法不能被重写
final修饰变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改,如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象
当一个线程进入一个对象的synchronized方法后,其他线程是否可进入此对象的次方法?
不能进入
一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制?
一个.java的源文件中是可以包含多个类的,但是public类只能有一个,并且类名要和文件名相同,如果有两个public类 就会报出以下的错误
![7263184a55fbdf7d86f4b64261459d31.png](https://i-blog.csdnimg.cn/blog_migrate/618d9a0eb38c5a373dba8d10618ccda9.jpeg)
可以看到提示Test2应该被定义到一个Test2.java文件中
![aa1237a8cd35d90e0390490bbf696e2d.png](https://i-blog.csdnimg.cn/blog_migrate/1f325f94979a6c86e4bbc329ba665768.jpeg)
将Test2的的public去掉,即正常并且在Test1中可以使用
![6ffea1daf09de2ae74ce139fccea2439.png](https://i-blog.csdnimg.cn/blog_migrate/500bfc4f02d909ff7ab08a5512aadc5f.jpeg)
最后会被编译为2个class文件
![94bfe7e881a2298980832b186d5efe70.png](https://i-blog.csdnimg.cn/blog_migrate/303e888654247f6918479044cf1b60f6.jpeg)
下列程序段,数据的结果是什么?
![7450ff3d5dd6a11c9122cee12647a376.png](https://i-blog.csdnimg.cn/blog_migrate/51ea58fb25606b2c2f304c0cf5aabd2d.jpeg)
输入为
1
2
4
![0a9f689847f85e6107ae49fac93ba4dc.png](https://i-blog.csdnimg.cn/blog_migrate/54d5794c171b0a31359c011ca1582f37.jpeg)
设有一组关键词序列{5,8.14,20,31,55,78,81,93,97,11},使用二分法查找关键字93需要多少次比较
一般是让写二分查找代码,简单写一下吧,次数自己模拟一下就行
![fb52f2764a8678fdd13626e5d90a01f8.png](https://i-blog.csdnimg.cn/blog_migrate/2605dd091fa555733e3063b043296279.jpeg)
getValue(2)的结果是10
getValue(4)的结果是18
很简单的2个题,不再说了
下面关于abstract关键字描述错误的是
abstract类的子类必须实现其超类的所有abstract方法(错误的)
看如下代码,不会报错,所以不用实现
abstract class Father { public abstract void show();}public abstract class Son extends Father{}
下面是一颗树,请用某种方式将其转为二叉树,同时写出先序遍历
树转二叉树有一个法则
(1)树中所有相同双亲结点的兄弟结点之间加一条连线;
(2)对树中不是双亲结点的第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线;
(3)整理所有保留的连线,根据连线摆放成二叉树的结构,转换完成。
![60d00ad7a102539ba01810f08f1e86d6.png](https://i-blog.csdnimg.cn/blog_migrate/9fc79c66aafc1b72a522ab5c41383b42.jpeg)
![708e668c269c9fa06f716f40df92cd10.png](https://i-blog.csdnimg.cn/blog_migrate/162846dc7d67bb238d8fbe3a97427218.jpeg)
是左子树还是右子树的一个法则是,左儿子,右兄弟(儿子是左子树,兄弟是右子树)
题目中将树转为二叉树的过程如下
![8b63ef9e4006bb7de5437fe9eb5d3fbd.png](https://i-blog.csdnimg.cn/blog_migrate/c75e324c851badf7acacaf98867dd496.jpeg)
写出先序遍历,上口诀
前序遍历:根,左,右
中序遍历:左,根,右
后序遍历:左,右,根
先序遍历为ABEFCGDH
在Java中,如何跳出当前的多重嵌套循环,两种方式实现?如数组int arr[][]={{1,2,3},{4,5,6,7},{8,9,5}}
找到数值5打印并跳出循环
标记退出这种方式我就不写了,写一个大多数人不知道的骚操作,这里先演示一下retry的使用
break retry 跳到retry处,且不再进入循环
continue retry 跳到retry处,且再次进入循环
break retry的使用
![54f789921772e405a2a1b308c1331e10.png](https://i-blog.csdnimg.cn/blog_migrate/811cd2ecb137e64125f727b292760ffe.jpeg)
continue retry的使用
![383da61e0bab74efa766099688bfb96b.png](https://i-blog.csdnimg.cn/blog_migrate/4ac6fc56aef93c80abe717e783d90870.jpeg)
所以一种写法就是
![f1fa2e94a9ab1e480959c9937e17698d.png](https://i-blog.csdnimg.cn/blog_migrate/bd4dd1308b66a5ff8e17207c97c655c9.jpeg)
![0c4361df1b7ded20e1ac368ada1ecd17.png](https://i-blog.csdnimg.cn/blog_migrate/2dd86e87b7441e2bf447997143663336.jpeg)
删除list中指定的所有元素,例如List();如果存储的数据是[1,2,3,2,4,5,2]删除所有数值等于2的元素?
这个需要注意的一点就是尽量不要用list.remove(),因为要注意的细节比较多,很容易出错,我也不想解释了,有兴趣的可以看一下这篇文章
https://blog.csdn.net/qq_42986107/article/details/81988470
用迭代器模式删除就行
![c33ab5bdc0d20719a99db03f2e250c77.png](https://i-blog.csdnimg.cn/blog_migrate/5dcc2ab938a444088bd87a75b02a7c1b.jpeg)
输出如下代码的输出结果
![035d8dcbf8fb0925fc0d444f0d21898f.png](https://i-blog.csdnimg.cn/blog_migrate/ea015b5944214dbc6f7178fbe64ae14e.jpeg)
从这个题目也可以看出一个.java文件可以包括多个类
简单的类加载顺序,上口诀
- 父类的静态(静态代码块,静态成员变量),子类的静态(静态代码块,静态成员变量)
- 父类的非静态(构造代码块,非静态成员变量),父类的构造函数
- 子类的非静态(构造代码块,非静态成员变量),子类的构造函数
所以写出如下输出就很容易了
static Astatic BI'm A classHello AI'm B classHello B
剩下的编程题没多大难度,就不写了
![2919a121a9c6242b0a6bd5c50167f21c.png](https://i-blog.csdnimg.cn/blog_migrate/cf09368688370504fa8a7b4663fe9516.jpeg)
(面试真题总结)帝都,Java,日活跃用户过百万app
疯狂Java面试系列-北京望京-钢琴教育公司
C轮融资,国内领先餐饮供应链电商,美菜网,Java面试真题总结
A轮千万美元融资,三里屯soho,金融公司,懒投资,Java面试总结
关注Java识堂,持续分享北京几十家公司面试真题,有好的面试题也可能分享给我,欢迎进群
764113208 交流面试过程,欢迎加我微信zztierlie