三七互娱广州Java平台工程师线上笔试总结
一、第一部分逻辑选择题
该题型为推断题,找规律
题量为35题,时间为25分钟
举例一个简单的:
也就前几个是这个难度的,后面的难度越来越大,我做了20多个然后没时间了,最后几个赶着做的,感觉后面的难度比较大,需要时间去思考,但给的时间太少。
二、第二部分专业题
这个部分是选择题+一个MySQL查询题+算法题+编程题
选择题考一些java基本知识+网络协议+加密算法+反向代理
1. java基本知识的话比如集合类的继承关系,多选题选择
挑几个问,这题在多选题出现
2. 加密算法问的是非对称加密有哪些,多选题选择
参考答案博客:https://blog.csdn.net/liudongdong19/article/details/82217431
3. 反向代理的作用,多选题选择
参考答案博客:https://www.zhihu.com/question/20072181
4.有关于类加载器描述正确的是,多选题选择(忘了具体内容)
5.以下是String的方法的有,多选题选择
A.indexof
B.replace
C.length
D.getBytes
E.我忘了啥了,反正不能选
6.单选题问一些java简单的知识,比如说jvm、多线程、集合类等等。主要的我记得的:一个linux查看ip信息的、https的端口这些。给出二叉树的前序和中序,求后序也有。还有问到了多线程常用的辅助类:CountDownLatch、CyclicBarrier、Semaphore(一定要知道有什么用)。Volatile的作用。
7 一个MySQL查询题(这个记不清是安客创新还是三七互娱的,有点记不清,反正都练了吧)
sql表(表名:employee):
id | name | sex | salary | manager_id |
---|---|---|---|---|
1 | Tom | male | 5000 | 2 |
2 | Smith | male | 6000 | null |
3 | Peter | female | 7000 | null |
4 | Jom | male | 4000 | 1 |
5 | Bob | male | 8000 | 3 |
字段解释:
id:编号
name:名字
sex:性别
salary:工资
manager_id:上级id
问题:
请写出一个sql查询比他(她)老板的工资还高的员工
查询结果需这样显示:
| Employee |
| Bob |
8. 算法题是给了一串数字,如:22 21 14 37 85 43 89 44 67。请问这一串数字按选择排序、冒泡排序、插入排序、希尔排序(增量为3)的在一系列排序操作中求第一轮操作完的结果
比如说选择排序第一轮的结果:
14 22 21 37 85 43 89 44 67
9. 编程题:
问题一:优化S类,让下列1和2同步执行
package com.lxf.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author Administrator
*/
public class S {
public void fun1(){
for (int i = 0; i < 10; i++) {
System.out.print(i+" ");
}
}
public static void main(String[] args) {
S s = new S();
ExecutorService exec=Executors.newCachedThreadPool();
exec.execute(()->s.fun1());//1
exec.execute(()->s.fun1());//2
}
}
问题二:优化S类,让下列1和2同步执行
package com.lxf.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author Administrator
*/
public class S {
public void fun1(){
for (int i = 0; i < 10; i++) {
System.out.print(i+" ");
}
}
public static void main(String[] args) {
S s1 = new S();
S s2=new S();
ExecutorService exec=Executors.newCachedThreadPool();
exec.execute(()->s1.fun1());//1
exec.execute(()->s2.fun1());//2
}
}