本系列历史文章:
学姐,来挑战字节最牛部门
最强阿里巴巴历年经典面试题汇总:C++研发岗
关于我的那些面经——百度后端(附答案)
《关于我的那些面经》滴滴Java岗(附答案)
朋友面神策数据库,第五个问题不会,直接再见
美女学姐面了美团阿里京东,这些经验实在太真实了
学姐腾讯产品面经
学姐总结奇安信18k常问面试题
这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦
1、测试环境搭建过程
2、 验证环境部署是否成功时 跑测试用例 接口是什么样的?(服务对外提供的调用接口)
3、 数据库 表 有个字段 name字段 name=liuguoge 唯一标识id=3 修改name=guogeliu
update user set name=guogeliu where id=3;
4、写链表翻转(说思路,代码中每一行的作用)
public ListNode ReverseList(ListNode head) {
//当前节点是head,pre为当前节点的前一节点,next为当前节点的下一节点
if(head==null)return null;
ListNode pre = null;
ListNode next = null;
while(head!=null){
//先用next保存head的下一个节点的信息
next = head.next;
//保存完next,就可以让head从指向next变成指向pre了
head.next = pre;
//让pre,head,next依次向后移动一个节点,继续下一次的指针反转
pre = head;
head = next;
}
//head为null,反转完毕,pre就是反转后链表的第一个节点
return pre;
}
5、 Scp和wget区别
curl是libcurl这个库支持的,wget是一个纯粹的命令行命令。
curl支持更多的协议。
curl 支持FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE,
Wget 支持HTTP, HTTPS and FTP.
curl 默认支持HTTP1.1(也支持1.0),而wget仅仅支持HTTP1.0规范。
4.curl在指定要下载的链接时能够支持URL的序列或集合,而wget则不能这样;
5.wget支持递归下载,而curl则没有这个功能。
7、 重载与重写区别
定义区别:
①重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
②覆盖(也叫重写)是指在派生类中重新对基类中的虚函数重新实现。即函数名和参数都一样,只是函数的实现体不一样。
类的关系区别
覆盖是子类和父类之间的关系,垂直关系;重载是同一个类中方法之间的关系,水平关系。
3.产生方法区别
覆盖只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系。
4.参数列表要求区别
覆盖要求参数列表相同;重载要求参数列表不同。
5.调用方法区别
覆盖关系中,调用方法体是根据对象的类型来决定;而重载关系是根据调用时的实参表与形参表来选择方法体的。
1、介绍实习经历
2、 测试环境的检查(接口测试)
3、 写代码:奇数在前,偶数在后
private static void fun(int[] arr) {
if (arr.length == 0)return;
int front = 0,end = arr.length-1;//设置两个指针,一个指向头部,一个指向尾部
while (front < end){
//从前往后找偶数
while (front < arr.length && arr[front]%2 == 1) front++;
//从后往前找奇数
while (end >= 0 && arr[end]%2 == 0)end--;
//将前面的偶数与后面奇数交换位置
if (front < end){
int temp = arr[front];
arr[front] = arr[end];
arr[end] = temp;
}
}
}
如何判断bug前后端?
前端的问题:
在用户输入数据后,发送的请求没有带数据或者数据错误。
后台已经传回了数据,但在前端显示不出来。
后端的问题:
接受请求后,存储/修改错误(查看数据库)
返回数据错误
抓包工具来进行分析
通过请求与响应来判断。
1.请求接口url是否正确
如果请求的接口url错误,为前端的bug
2.传参是否正确
如果传参不正确,为前端的bug
3请求接口url和传参都正确,查看响应是否正确
如果响应内容不正确,为后端bug
4,后端bug需要查看 服务器的log日志
3.一个真实的测试场景,问如何排查问题
4.黑盒测试和白盒测试和灰盒测试区别以及都有什么方法
黑盒:只关注输出的正确性
白盒:了解程序内部逻辑结构、对所有逻辑路径进行测试。
灰盒测试,介于二者之间的,关注输出的正确性,同时也关注内部表现。
方法:
黑盒:等价类划分、边值分析、因—果图、错误推测等
白盒:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、路径覆盖
三次握手
第一次:发送请求
第二次:告诉对方受到了请求并同意
第三次:告诉对方收到了你的同意,可以开始了。
为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。
但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
tcp为什么能稳定传输
[1] 确认和重传机制
建立连接时三次握手同步双方的“序列号 + 确认号 + 窗口大小信息”,是确认重传的基础,
传输过程中,如果Checksum校验失败、丢包或延时,发送端重传。
[2] 数据排序
TCP有专门的序列号SN字段,可提供数据re-order
[3] 流量控制
窗口和计时器的使用。TCP窗口中会指明双方能够发送接收的最大数据量
[4] 拥塞控制
TCP的拥塞控制由4个核心算法组成。
“慢启动”“拥塞避免”“快速重传 ”“快速恢复”
HTTP状态码分别表示啥
信息响应(100–199)
成功响应(200–299)
重定向(300–399)
客户端错误(400–499)
服务器错误 (500–599)