您的位置:首页 > 职场人生

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

2017-09-27 11:29 393 查看

编程题学习:

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表示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息