16
回答
面试题,自己水平太低,大家帮忙看一下~~~

刚同学回来的面试题 大家帮忙看一下把!!!!!!!!!!!!!!!!!!!1

1.假设你要编写函数A()中,A()无论发生什么异常,方法A都能捕获并打印所有这些异常,同时对外抛出一个异常。方法A()应该用什么样的代码块?

2有两个java编写的进程AB,如何实现A进程关闭B进程?

3. Java中药保证方法A()同时只能有一个线程访问,应该使用什么样的方法?要确保方法A()内部中某行代码同时只能有一个线程访问,应该用什么样的方法?

4介绍你再java代码开发中,对已有的代码进行重构,重组,优化的方法经验?

5.已知有m个班级名,每个班有n名学生ID和姓名:为了方便查询出某个班级上的所有学生ID,以及通过学生ID快速找到学生姓名。应该定义java.util中什么样的集合来保存班级名、学生ID,姓名?

 

<无标签>
举报
yqbboy
发帖于5年前 16回/1K+阅
共有16个答案 最后回答: 5年前

1.try catch,并且捕获顶层异常接口 exception,防止捕获不到的异常向外抛出导致程序结束。

2.因为是进程A关闭进程B,可以借鉴eclipse关闭由他启动的java程序,首先得到要结束的进程的PID,调用操作系统指令将这个PID kill掉。但是此时的关闭属于强制关闭,如果是两台物理机器上的进程互相关闭,则要依靠socket通信并且实现一套通信协议来保证被关掉的接收到指令后结束自身的运行,此时可以达到一个安全的关闭。

3.一个方法只能同时被一个线程调用,最简单的方式是方法头部加上synchronized,如果担心大量的线程因为这个关键字而导致线程停滞,则可以使用一个并发安全的队列+异步回调方式,借用生产者和消费者模型,提高速度。一个方法的代码块加锁,简单的要么用synchronized,包住代码块,或者使用lock来锁住代码块,如果代码块运行时间久,可以将代码块独立出来参照上面的生产者消费者模型+回调的方式来加速,如果代码块中的操作小,比如只是修改一个变量,则可以使用atomic来替代。

4.重构,重组,优化是一个比较泛的说法,一般来说在不添加业务和不是对BUG修复的情况下对程序进行重构重组和优化主要考虑到以下几个方面,第一:使程序更易读易维护,涉及到对函数接口的规范和类设计的规范,主要是用程序之外的规则来约束代码的行为。第二:提高程序的安全性,运行速度等,常见的是算法优化,崩溃恢复,强输入检查,外部输入输出优化(比如SQL语句,文件读写,网络底层,线程使用)等。

5.我的做法是 map中的map,因为班级对学生是一个一对多的关系,学生对班级是一对一的关系,首先以学生的id做为map的key,设计一个学生类作为map的value,得出一个存储所有学生信息的map<String,Student>,String做key考虑到不同的学校学生的ID不同有的是纯数字但会超过int的上限,有的是字符串+数字来作为ID。然后设计一个班级类用来做班级-学生的映射,map<班级号,hashset<String(学生编号)>>。

--- 共有 2 条评论 ---
散装海盗mark 5年前 回复
总会有无法选择的时候赞一个! 5年前 回复

第一个应该是 try catch把?

第四个首先应该确定代码都是自己开发的或者自己完全熟悉流程等,然后把想通部分的代码提取成方法,在然后把不同的类之间的想通方法提取为接口或者抽象类,然后寻找适合的设计模式进行接口的组合等

--- 共有 2 条评论 ---
北落回复 @yqbboy : 一步步的来,由下而上的一种设计方式 5年前 回复
yqbboy我觉得你第一个说的好的 第四个没听太明白~~~ 5年前 回复

1、try catch throw

2.

3 、互斥 临界区

4.hash

--- 共有 2 条评论 ---
hanzhankang4.hash??? 对刚毕业的学生的考查明显不是这样的吧,应该是考查对业务的理解与分析能力,就是把功能细化、模块化、最终达到代码重用的目的。 5年前 回复
yqbboy第三个和 第四个能说的更详细些吗?? 5年前 回复

1、try catch

2 、开个socket

3、方法加synchronized,代码块加synchronized,或使用Lock

4、。。。

5、map

--- 共有 4 条评论 ---
hanzhankang@hunterli 我感觉还是进程间通信吧 5年前 回复
hunterli回复 @hanzhankang : 用socket发个通知,两边约定一下而已。应用级别上的。 5年前 回复
hanzhankang第二个如果没有限定的话可以使用守护进程吗?Socket这个咋实现?? 5年前 回复
夕水溪下+1 5年前 回复
完全无难度嘛.  帝都 7k/m的题目.
--- 共有 4 条评论 ---
开源中国首席工程师回复 @Lunar_Lin : 4介绍你再java代码开发中,对已有的代码进行重构,重组,优化的方法经验? 这个你一个下午就可以秒杀? 5年前 回复
Lunar_Lin这要答不上来, 我都自掏20元RMB, "哥, 一点点路费, 小企业不容易. 您就放过我们公司吧, 下一个. " 5年前 回复
Lunar_Lin回复 @yqbboy : 关键这都是些java最吊丝的书上都会有的内容, 随便花一下午看本java的书就直接秒杀的题啊, 除了第4个是无聊扯淡的题目外. 说7K完全是高高估了. 我当面试官, 计科学生这样的题目勉强才能回答, 4k月薪 +10元面试盒饭不能再多了. 5年前 回复
yqbboy我去 那你把题目答案写出来啊~~~ 5年前 回复

第五题,总觉得需要使用类似“规范化”的方式,数据库要分表,这里吧,写成了两个类。

HashMap<Integer, HashSet<String>> classMap;
HashMap<String, String> stuMap;
通过第一个map找到班级的所有学生id

通过第二个map找到对应id的学生姓名,还可以将学生封装成类,这样就能提供更多的信息了

顶部