肖sir___阿里面试题__笔试题
身份证:330184198903193110
籍贯:浙江省杭州市余杭区良渚街道
之前薪资12K
期望薪资13K
最近公司地址:杭州市西湖区文一西路522号(杭州百图科技有限公司)
之前公司地址:杭州市拱墅区赵伍路325号(杭州行以致远有限公司)
现住地址:杭州市余杭区良渚街道运河锦庭
学校地址:宁波经济技术开发区庐山东路388号
1、有一个String 例如a= "123,345,567",用“,”分割开,现在请你写一个类,声明一个函数,这个函数的入参就是类似a这样的String,将这个String,分割成["123","345","567"]这样的List返回,并且自己在这个类里写main函数测试。
#ava.util这个包下面的东西都是工具类
import java.util.ArrayList; #引入ArrayList类 #ArrayList底层是数组结构的一个集合容器,是Collection接口下List接口下的子类
import java.util.HashSet; #引入 HashSet 类
import java.util.List; #引入 list类
import java.util.Set;#引入et 类
public class TestDemo { #定义 测试类
public static void func1(){ #定义个一个func1的方法
String a = "123,345,567"; #定义字符 a="123,345,567"
String[] array = a.split(","); #定义一个 数组 ,a中split分割,使用,
List<String> list=new ArrayList<String>(); #
for (String b : array){
list.add(b);
}
System.out.println(list);
}
public static void main(String[] args) {
func1();
}
}
2、在题1的基础上,如果当前这个a是有重复的内容,例如 "123,123,345,345,567",题1返回的list里不能有重复的内容,即最后的结果仍然是["123","345","567"]。要求同题1。
import java.util.HashSet;
import java.util.Set;
public class TestDemo {
public static void func2(){
String a = "123,123,345,345,567";
String[] array = a.split(",");
Set<String> set = new HashSet<String>();
for (String b : array){
//通过set去重操作
set.add(b);
}
System.out.println(set);
}
public static void main(String[] args) {
func2();
}
}
3、编写一个函数,用于判断字符串是否回文,首尾字母相同是回文,比如abcba是回文,abcde不是。要求同题1、2。
import java.io.IOException;
public class Main {
public static boolean func(String str) {
StringBuilder s1 = new StringBuilder(str);
s1.reverse(); //通过反转的方法判断是否为回文数
String s2 = new String(s1);
if (str.equals(s2)) {
return true;
} else {
return false;
}
}
public static void main(String[] args) throws IOException {
String str1 = "12321";
int aaa = 12324;
String str2 = String.valueOf(aaa);
System.out.println(func(str1));
System.out.println(func(str2));
}
}
===================================
编写一个程序,启动三个线程,三个线程的ID分别是A,B,C; 每个线程将自己的ID值在屏幕上打印5遍,打印顺序是ABCABC...
package fz;
public class abc {
public static void main(String[] args) {
new Thread(new OrderThread(0,'A')).start();
new Thread(new OrderThread(1,'B')).start();
new Thread(new OrderThread(2,'C')).start();
}
}
class OrderThread implements Runnable {
//定义一个类静态变量的锁对象
private static Object o = new Object();
//类静态变量、用来记录是哪个线程进入运行
private static int count = 0;
//每个线程的标识,名称
private char ID;
//用来控制是线程运行的标识
private int id;
//每个线程运行的次数
private int num = 0;
public OrderThread(int id,char ID) {
this.id = id;
this.ID = ID;
}
public void run() {
synchronized (o) {
while (num < 5) {
if(count % 3 == id){
System.out.print(ID);
++ count;
++ num;
o.notifyAll();
}
else{
try {
o.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
解释:首先我定义一个Thread1类,然后实现Runnable接口,并且通过创建一个锁对象O,这个count用来记录是哪个线程进入运行,这个ID是用来控制是线程运行的标识,小写的id是每个线程运行的次数,然后再定义一个run方法,通过synchronized锁来控制锁对象O,然后判断每个线程运行的次数小于3就进入循环,然后,判断用来记录是哪个线程进入运行取余3等于id的话,就打印出每个线程的标识,名称ID,并且count和num都自增长一次,然后通过锁对象调用notifyAll方法唤醒行程。 然后下面就是通过创建一个main函数,主函数来创建3个线程,通过start方法来启动。
====================================
蚂蚁面试面试题:
1、自我介绍下?
2、讲下自己工作、测试哪些内容、遇到什么问题、工作怎么开展?
3、java中sprint 和sprint boot 的区别?
4、java中ioc 和aop 式什么?解释下?
5、你做过哪些自动化测试?讲完python的自动化
6、java自动化的框架用过哪些?具体用到哪些类?
7、你讲下在工作中具体使用java自动化?
8、java的数据类型有哪些?
=================================
1.优惠券满减的测试点
2.aop和ioc的底层实现原理是什么?
3.Java多线程知道吗?
4.Java里面的锁有哪些?==》悲观锁和乐观锁,可重入锁和不可重入锁,公平锁和非公平锁,自旋锁,共享锁和独享锁
5.String 、 StringBuffer 、 StringBuilder 区别
6.Java接口自动化的框架分层是怎样的
7.Java接口框架里面自己封装了哪些工具类 ==》random生成随机测试数据的,读取配置文件的,jdbc连接数据库的
8.Java的spring框架知道吗?
9.Java的spring框架里面的bean是怎么理解的
10.会拉取开发的工程代码去调试吗,比如自己debug一下找找bug
11.Java中hashmap底层实现原理
12.Java中hashmap底层Hash冲突以及如何解决Hash冲突
13.悲观锁和乐观锁的区别讲一下
14.Java接口自动化写的接口用例大概讲一下,用了什么框架
15.讲一下项目
16.用了什么数据库,左连接和内连接和全连接的区别
17.怎么搭建的测试环境,说一下熟悉的Linux命令
18.结婚了吗?公司几个测试,有独立负责过项目吗?
19.现在住哪里