腾讯面试准备
-
TCP与UDP的区别。
-
TCP如何保证可靠传输。
-
TCP拥塞控制。
-
TCP三次握手、四次挥手的过程与作用?
-
TCP对应的协议?UDP对应的协议?
-
http 404和500界面(http状态码)
-
http方法
-
http长连接、短连接
-
输入一个url后的过程
-
http、https的区别
-
ping属于哪一层
-
ARP、RARP的含义以及区别
-
如何用UDP实现TCP
测试理论
-
为什么投测试开发?对测试开发的理解
-
如果开发人员跟你说不是bug怎么办?
-
测试一个用例的一半过程。
-
查看用户文档、需求文档、设计文档的内容,以此来设计测试用例;
-
功能测试:测试该用例需要实现的功能能否正常实现
-
性能测试:负载测试、压力测试。负载测试就是测试系统在各种工作负载逐渐增大时系统各项性能指标的变化。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。(性能测试)
-
安全测试:以网站为例:网站登录的安全性、是否存在溢出错误进而导致崩溃或者权限泄露。或者其他常见开发语言的安全性问题。
-
兼容性测试:浏览器、终端、操作系统等等的兼容性。
-
-
测试投币贩卖机
-
有一个实现单链表反转的函数(如何设计测试用例)
-
测试一个地铁进出站的二维码
-
有一个桌面端程序作用是发文件,如何测试?
数据库
-
数据库的增删查改
-
四大特性、三大范式
操作系统
-
并行与并发
并行处理(Parallel Processing)是计算机系统中能同时执行两个或更多个处理的一种计算方法。并行处理可同时工作于同一程序的不同方面。并行处理的主要目的是节省大型和复杂问题的解决时间。
并发处理(concurrency Processing):指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机(CPU)上运行,但任一个时刻点上只有一个程序在处理机(CPU)上运行
并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以说,并行是并发的子集
-
进程与线程的区别与联系
进程是是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程则是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程也叫轻量级进程。
进程和线程的关系:
-
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
-
资源分配给进程,同一进程的所有线程共享该进程的所有资源。
-
CPU分给线程,即真正在CPU上运行的是线程。
-
线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
-
-
线程同步方式?
- 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。
- 信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。
- 事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。
-
进程通信方式?
为什么要通信?因为一个进程不能直接访问另一个进程的地址空间。
-
进程同步的机制?
-
死锁的产生与如何处理死锁。
死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。
死锁产生的四个条件(有一个条件不成立,则不会产生死锁)
- 互斥条件:一个资源一次只能被一个进程使用
- 请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放
- 不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺
- 循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系
避免死锁:
-
linux基本命令:移动文件,查看端口号,查看文件最后十行
移动文件:mv
查看端口号:netstat(linux查看端口号)
查看文件最后十行:Linux查看文件的前几行和后几行
-
如何查看linux下一个线程有没有执行成功?
top、ps命令:Linux查看进程所有子进程和线程
-
两个进程同时访问一个内存地址都是0123456,是不是一个内存
-
如何判断一个linux命令是否执行成功?
Linux每一条基本命令都有一个返回码,该返回码用$?表示,执行成功返回0。(Linux判断一个命令是否执行成功)
-
如何查看cpu利用率。
top:Linux查看cpu利用率
python
-
python知识:多线程、多进程、协程;
-
python内存管理
-
python -m test.py 和 python test.py 区别。
-
python中if __name __ == ‘main’含义?
-
Linux执行python脚本的命令。
数据结构
-
数组与链表的区别
-
数据结构中堆和栈的区别
-
用两个栈实现一个队列
算法题
-
排序算法
-
打印九九乘法表
-
圆环取数,从圆环里取m个数的最大值,规定每次不能取和上次相邻的
-
先撕一道算法实现一个函数,给一个字符串返回出现最多的字符并返回其出现次数?讲一下算法思路?以及如何去优化它?
-
给定一个字符串,输出本字符串中只出现一次并且最靠前的那个位置(用dict,两次遍历,O(n))
-
有一个rand6()函数,均匀返回1-6之间的整数,通过rand6()实现rand10()能均匀返回1-10之间的整数。
-
两个字符串,求一个字符串在另一个字符串中的索引(开始我以为是每个字符的索引,
写完后,面试官说是整个字符串然后又改,最后写的还是不够全面,没考虑异常情况)
-
100层楼,两个玻璃球,实验从那一层扔下去球不会破?
-
一棵树两个节点求他们的最近的公共父节点
-
1~n个数,找出所有和为M的序列,包括M本身。
-
递增数组中找两个数和为某个固定值。