1、分石头问题,分为五份还要多一,最后取一份+1
2、多线程的死锁问题:
死锁——当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步。这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁。
即:多个线程中程序相互竞争资源的问题
3、自旋锁(spinlock)的主要缺点:
自旋锁——通过busy-wait-loop的方式来获取锁,且任时刻只有一个线程能够获得锁,如果此时其他线程请求锁,就会进入忙等待。
自旋锁可能存在的两个问题:死锁(想递归获得自旋锁时会导致死锁)、过多占用CPU资源(为了防止申请程序不断等待,一般自旋锁会限制程序的尝试次数)
自旋锁在执行过程中会锁总线(bus),导致其他程序无法使用总线
4、vachar与char的区别:char 是长度固定的,而 vachar 是长度可变的字符串
5、使用TCP协议的通信:
TCP协议不是应用层而是传输协议层
TCP:HTTP,FTP,SMTP,TENET,POP3,Finger,NNTP,IMAP4
UDP:BOOTP,DHCP,NTP,TFTP,SNMP
6、TCP/IP协议层
7、一个程序中所含有的路径数与程序的复杂度有着直接的关系
程序的复杂度,即算法的复杂度,主要由时间复杂度+空间复杂度两个方面来考虑
8、UI自动化的页面元素定位的方法:ID、name、class_name、tag_name、link、css、xpath
//对象的定位和操作是自动化测试的核心
9、不适合用自动化的测试:
在系统功能的逻辑测试、验收测试、适用性测试、涉及物理交互性测试时,也很难通过自动化测试来实现,多采用黑盒测试的手工测试方法;
单元测试、集成测试、系统负载或性能测试、稳定性测试、可靠性测试等比较适合采用自动化测试;
//回归测试的自动化测试的强项
//性能、压力测试都适合用自动化测试
10、Android系统的四层架构:操作系统层(OS)、各种数据库、应用程序框架、应用程序
11、SQL中更新数据的用法:update tableName set FiledName=NewValue[where condition]
12、S1.equals(S2) 与 S1==S2 判定的区别:用equals判定忽略大小写
详情见:常见面试题八--s1,s2都是String对象,说说表达式s1==s2与s1.equal(s2)的区别
13、变量S未初始化时的java输出:提示未初始化变量,如果是基本数据类型,则会有初始值,如果不是,则一般是null
———————
在类中定义的成员变量如果你没有初始化java会自动帮你初始化,如果是数字会自动初始化成0,字符会初始化成'o',对象引用会初始化成null
局部变量必须初始化,否则编译会报错