内推,hr小姐姐会加微信,然后安排面试时间。参加的两场都很准时(电话)。
1面大概40分钟左右。
1.自我介绍+项目介绍+自己在项目中的主要工作+围绕项目问了2-3个问题例如是否用了python框架,精确率召回率如何计算的等等。
2.实习的时间。为什么选择做测试。面试老师表示看过我的博客,问了下之前百度面试为啥没收到offer。
3.给定一个String类型对象,如何判断其是一个IPV4的字符串
IPV4的格式大概是xxx.xxx.xxx.xxx。最开始答的是用正则表达式进行匹配,但是不查资料写不出来正则表达式。
IPV4地址由4个组数字组成,每组数字之间以.分隔,每组数字的取值范围是0-255。 IPV4必须满足以下四条规则: 1、任何一个1位或2位数字,即0-99; 这样把规则全部罗列出来之后,构造一个正则表达式的思路就清晰了。 首先满足第一条规则的正则是:\d{1,2} 把它们组合起来,就得到一个匹配0-255数字的正则表达式了: (\d{1,2})|(1\d{2})|(2[0-4]\d)|( 25[0-5]) IPV4由四组这样的数字组成,中间由.隔开,或者说由三组数字和字符.和一组数字组成,所以匹配IPV4的正则表达式如下: (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5])) |
public static void matchAndPrint(String regex, String sourceText){
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sourceText);
while(matcher.find()){
System.out.println(matcher.group());
}
}
public static void main(String[] args) {
String regex = "^(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))$";
matchAndPrint(regex, "23.135.2.255");
matchAndPrint(regex, "255.255.0.256");
matchAndPrint(regex, "0.0.0.0");
}
面试老师提示是否还有其他办法,我说可以用split将这个字符串断成几段并进行检查。问到split里面应该填写什么。这个地方要注意split函数的参数其实是一个正则表达式,所以对"."要进行转义,这里注意"\\."才是其转义,第一个是对\的转义。
4.有一组放在list里面的对象,对象有一个属性就是之前3说的这种字符串,另一个属性是姓名,需要将对象进行排序,按照ipv4的大小进行,例如192.168.1.1小于192.168.1.2
可以使用Collections.Sort方法,并定义一个比较器,在比较器中对这种进行比较,也是split后进行比较。
5.linux下查看文件夹下的文件,包括隐藏文件,如何看到详细信息
ls命令,-a参数可以看到隐藏文件,-l参数可以看到详细信息
6.linux下kill掉所有python进程
ps -ef | grep .python | awk '{print $2}'|xargs kill -9
ps查看所有进程,grep 查找所有.python的进程,awk 输出第二列的数据,这个地方是进程号,xargs是将前面的结果作为kill -9的参数。
7.数据库下指定某列为自增:Auto-Increment
8.数据库下指定某列值唯一:unique或者设置为主键
9.如何设置外键
alter table user add foreign key(pid) references province(pId)
10.设计一个客户端作为测试对服务器端发起访问,统计返回码为200的个数。
客户端就用多线程对服务器端进行访问。并进行统计
uConnection.getResponseCode() 可以获取返回状态码
问了如何进行同步,我答了同步的三种方式,问是否有更简单的方法,我想到了volatile。但volatile在这种方式下其实也需要锁的配合。这两天看到Java并发编程实战才了解到可以使用java提供的线程安全类中的原子变量类。该类在java.util.concurrent.atomic内,对于这种情况可以很好地解决。
再问了如何设计该类,也就是实现runable或者是继承Thread类。问是否有更好的方法,提示了线程池,问了线程池,但是这方面没接触过,没有继续深入了。没有写过这方面的代码答起来比较吃力。
1个小时后接到通过通知。
2面 20分钟
1.实习的时间
2.是否有近期或者长期的职业规划
3.介绍一下自己的项目和实习
4.针对项目又提了两三个问题