当前位置: 首页 > news >正文

Interview2---3g

1.字节流与字符流的区别?

第一:字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。

第二:字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.

第三:字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;

第四:字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

2.HashMap和HashTable的区别?

第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

第二:HashTable是线程安全的,而HashMap不是;

第三:HashMap允许有一个key为null和多个value为null, 而HashTable是不可以的.

3.Vector与ArrayList的区别?

第一、同步性:Vector是线程安全的,ArrayList不是。

第二、数据增长:当需要增长时,Vector默认为原来的一倍,而ArrayList是原来的一半。

4.Java中如何引发异常, 处理异常有两种途径?

Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的。

* Runtime exceptions:
在定义方法时不需要声明会抛出runtime exception;
在调用这个方法时不需要捕获这个runtime exception;
runtime exception是从java.lang.RuntimeException或java.lang.Error类衍生出来的。
* Checked exceptions:
定义方法时必须声明所有可能会抛出的checked exception;
在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;
checked exception是从java.lang.Exception类衍生出来的。

两种途径: 1.调用者来处理; 2.通过try/catch来处理;

5.百马百担货, 大马三担, 中马二担, 小马两马一担, 求大中小马各有多少?

public class HorseTest {
public static void main(String[] args) {
int i,j;//
for (i = 1; i < 34; i++) {//大马
for (j = 1; j < (100-3*i)/2+1; j++) {//中马
if ((100-i-j)%2==0 && 3*i+2*j+(100-i-j)/2==100) {
System.out.println("大马,中马,小马:"+i+","+j+","+(100-i-j));
}
}
}
}
}

6.从前有个农民,一生养了不少牛。去世前留下遗嘱:牛的总数的一半加半头给儿子,剩下牛的一半加半头给妻子,再剩下的一半加半头给女儿,再剩下的一半加半头宰杀犒劳帮忙的老乡。农民去世后,他们按遗嘱分完后恰好一头也不剩。他们各分了多少头牛?

解:

1-->儿子 1/2x+1/2

2-->妻子 1/4x+1/4

3—>女儿 1/8x+1/8

4-->乡亲 1/16x+1/16

可得:1/2x+1/2+1/4x+1/4+1/8x+1/8+1/16x+1/16=x, 解之得:x=15.

public class CattleTest {
public static void main(String[] args) {
System.out.println("总共的牛的头数是:"+cal(4));
}
private static int cal(int count) {
if (count>0) {
return 2*(cal(--count))+1;
}
return 0;
}
}

7.用JAVA写一个多线程程序。一个变量,四个线程,二个加1,二个减1,输出。

package com.yenange.actual;

public class ThreadTest1 {
private int j;

public static void main(String args[]) {
ThreadTest1 tt = new ThreadTest1();
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
for (int i = 0; i < 2; i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}

private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
}

private synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + "-dec:" + j);
}

class Inc implements Runnable {
public void run() {
for (int i = 0; i < 5; i++) {
inc();
}
}
}

class Dec implements Runnable {
public void run() {
for (int i = 0; i < 5; i++) {
dec();
}
}
}
}

8.十二个鸡蛋,其中有一个是坏的,用天平称三次,找出坏蛋。

解:

假设A,B相称.
(一):A和B平.说明话鸡蛋在C中.
A1C1和C2C3称(第二次):
1.平:A1和C4称(第三次):
1).C4高:C4是重的坏鸡蛋
2).C4低:C4是轻的坏鸡蛋
2.A1C1高:(说明C1是轻的坏鸡蛋,或者C2C3有个重的坏鸡蛋)
A1C2和A2C3称(第三次):
1).A1C2高:C2是重的坏鸡蛋
2).A2C3高:C3是重的坏鸡蛋
3).平:C1是轻的坏鸡蛋
3.A1C1低:推断和2类似
其他按照类似思路
不平(一例):
A高B低:(说明A中一个是轻的或B有一个是重的)
A1B1B2和A2B3C1称:(第二次):
平:(A3A4一为轻或B4为重)
A3和A4称:(第三次)
平:B4为重的
高:A3为轻的
低:A4为轻的
A1B1B2高:(A1为轻或B3为重的)
A1和C1称(第三次):
平:B3为重
高:A1为轻
低:(这种情况不会出现)
A1B1B2低:(B1B2一为重或A2轻)
B1和B2称:(第三次)
平:A2轻
高:B2重
低:B1重
另一情况类似

9.一颗二叉树有7个度数为2的节点, 有10个度数为1的节点, 求总节点数:25

image

10. 有如下几个类,打印结果如何?

package com.yenange.actual;

public class Z {
private Y y=new Y();
public Z(){
System.out.print("Z");
}
public static void main(String[] args) {
Z z=new Z();
}

}

class Y extends X{
private X x=new X();
public Y(){
System.out.print("Y");
}
}

class X {
public X(){
System.out.print("X");
}
}

结果:XXYZ

解答:

从Z开始,Z有属性y,所以要先Y, 但Y又有属性x, 所以打X, 而在构造Y时,必须先父类,所以再打X, 再打Y, 最后打Z

11.注意:String虽然是引用类型,但作方法参数无法回传。

相关文章:

  • 整合Bullet物理引擎到Ogre on iPhone
  • CDMA的定位方式
  • Bullet的3D Max插件
  • 判断字符串中字符最多的那一个及个数
  • 两个最容易被人忽略的基本代码优化技术
  • Windows的达尔文进化图
  • 算法面试:精选微软经典的算法面试100题(第1-20题)
  • 讨论PV原语、解答PV疑惑
  • 一个PV操作题引发的思考,如何看待进程间同步、互斥
  • windows中控制台中在同一行打印信息
  • 《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
  • 《Linux内核修炼之道》 之 高效学习Linux驱动开发
  • 《Linux内核修炼之道》 之 高效学习Linux内核
  • 嵌入式系统开发:Arm与Linux的完美结合
  • 浅析如何学习基于ARM平台的嵌入式系统
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  •  D - 粉碎叛乱F - 其他起义
  • ReactNativeweexDeviceOne对比
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vue的全局变量和全局拦截请求器
  • 阿里研究院入选中国企业智库系统影响力榜
  • 深度学习入门:10门免费线上课程推荐
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 树莓派 - 使用须知
  • 微信小程序:实现悬浮返回和分享按钮
  • 国内开源镜像站点
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # Java NIO(一)FileChannel
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (14)Hive调优——合并小文件
  • (阿里云万网)-域名注册购买实名流程
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (蓝桥杯每日一题)love
  • (算法)Game
  • (转) 深度模型优化性能 调参
  • .Family_物联网
  • .NET Core 项目指定SDK版本
  • .NET 的程序集加载上下文
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 事件模型教程(二)
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net下简单快捷的数值高低位切换
  • .NET中 MVC 工厂模式浅析
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @RequestParam详解
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)