新华三2018校园招聘笔试面试题学习

编程题学习:

7进制转10进制:

public class Text5 {
	public static void main(String[] args) {
		int num=14;
		int sum=0;
		int i=0;
		while(num>0){
			int temp=num%10;
			num=num/10;
			sum+=temp*Math.pow(7, i);
			i++;
		}
		System.out.println(sum);
	}
}
用内部Integer.parseInt(str,7)转换:
public class Text5 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()){
			String str=sc.nextLine();
			System.out.println(Integer.parseInt(str,7));
		}
	}
}
附带10进制转7进制算法题:
public class Text5 {
	public static void main(String[] args) {
		int num=111;
		StringBuffer sb = new StringBuffer();
		while(num>0){
			sb.append(num%7);
			num/=7;
		}
		int a=Integer.parseInt(sb.reverse().toString());
		System.out.println(a);
	}
}

随机生成密码算法题:

import java.util.Random;
import java.util.Scanner;

//随机生成密码算法题:
public class Text5 {
	public static void main(String[] args) {
		Random r=new Random();
		Scanner sr = new Scanner(System.in);
		while(sr.hasNext()){
			String str=sr.nextLine();
			int len=str.length();
			System.out.println(getPassword(r, str, len));
		}
	}

	private static String getPassword(Random r, String str, int len) {
		String password="";
		if(str.length()==0||str==" "){
			System.out.println(str);
		}else{
			for(int i=0;i<len;i++){
				int temp=r.nextInt(123);
				if(temp>=0&&temp<10){
					password+=temp;
				}else if((temp>=65&&temp<=90)||(temp>=97&&temp<=122)){
					char ch=(char)temp;
					password+=ch;
				}else{
					int current=r.nextInt(10);
					password+=current;
				}
			}
		}
		return password;
	}
}

面试题学习:

给你一个char型数组,执行数组.toString()。其返回的是什么?

返回该对象的字符串表示。通常,toString方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

说一说Java中的NIO。

    在非阻塞IO(NOnblocking IO,NIO)出现之前,Java是通过传统的Socket来实现基本的网络通信的。即阻塞式的网络通信,用的是IO的Stream类,如果客户端还没有对服务端发起连接请求,那么accept就会阻塞(阻塞是指暂停一个线程的执行以等待某个条件的发生,例如某资源就绪)。如果连接成功,当数据还没有准备好时,对read调用同样阻塞。这种方式采用多线程时由于阻塞会导致大量线程进行上下文切换,使得程序的运行效率非常低下。

    因此可以将NIO 中的Channel同传统IO中的Stream来类比,但是要注意,传统IO中,Stream是单向的,比如InputStream只能进行读取操作,OutputStream只能进行写操作。而Channel可以被看成是一个双向的非阻塞通道,在通道的两边既可用来进行读操作,又可用来进行写操作。

NIO中的几个基础概念:

1.Channel (通道)
2.Buffer (缓冲区)
3.Selector (选择器)

    Buffer(缓冲区),是NIO中非常重要的一个东西,在NIO中所有数据的读和写都离不开Buffer。比如上面的一段代码中,读取的数据时放在byte数组当中,而在NIO中,读取的数据只能放在Buffer中。同样地,写入数据也是先写入到Buffer中。
 NIO中最核心的一个东西:Selector。它是NIO中最关键的一个部分,它可以处理多个事件源,其主要作用就是用来轮询每个注册的Channel,一旦发现Channel有注册的事件发生,便获取事件然后进行处理。这种通过轮询的方式在处理多线程请求时也需要上下文的切换,而采用多线程的实现方式在线程之间切换时需要上下文的切换,同时也需要进行压栈与弹栈操作。因此,NIO有较高的执行效率。

    与传统的Socket相比,由于NIO采用了非阻塞的方式,在处理大量并发请求时,使用NIO要比使用Socket效率高出很多。

有return的情况下try catch finally的执行顺序

可以参考博客:http://www.cnblogs.com/superFish2016/p/6687549.html

hashmap是线程安全的吗?同时执行两个put操作线程安全吗?

hashmap是线程不安全的,HashMap在并发执行put操作时会引起死循环,导致CPU利用率接近100%。因为多线程会导致HashMap的Node链表形成环形数据结构,一旦形成环形数据结构,Node的next节点永远不为空,就会在获取Node时产生死循环。

Swicth 里面可以有String类型的参数吗?

在jdk 7 之前,switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型。switch后面的括号里面只能放int类型的值,但由于byte,short,char类型,它们会 自动 转换为int类型(精度小的向大的转化),所以它们也支持。
注意,对于精度比int大的类型,比如long、float,doulble,不会自动转换为int,如果想使用,就必须强转为int
如(int)float;

jdk1.7后整形,枚举类型,boolean,字符串都可以。为什么jdk1.7后又可以用string类型作为switch参数呢?

其实,jdk1.7并没有新的指令来处理switch string,而是通过调用switch中string.hashCode,将string转换为int从而进行判断。

Java中类的访问权限有哪几种?private 和default有什么区别?

作用域

当前类

同一包(package)

子孙类

其他包

public

protected

×

default

×

×

private

×

×

×

如果在修饰的元素上面没有写任何访问修饰符,用default表示





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值