百度测开
一面面经38min
问项目
get和post区别
- Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。
- Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。
- Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
- Get执行效率却比Post方法好。Get是form提交的默认方法。
说一下索引,索引底层实现,索引的缺点有哪些
-
1.索引的创建与维护索引要耗费不少时间,这种时间还会随着数据量的增加而增加。
2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
TCp和UDP区别
-
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
数组和列表的区别
-
array数组在定义时长度就是确定的 arraylist集合的长度根据元素的多少而改变 长度确定时用array数组,不确定时用arraylist集合
1、存储内容比较: Array 数组可以包含基本类型和对象类型, ArrayList 却只能包含对象类型。 Array 数组在存放的时候一定是同种类型的元素。ArrayList 就不一定了 。
2、空间大小比较: Array 数组的空间大小是固定的,所以需要事前确定合适的空间大小。 ArrayList 的空间是动态增长的,而且,每次添加新的元素的时候都会检查内部数组的空间是否足够。
3.方法上的比较: ArrayList 方法上比 Array 更多样化,比如添加全部 addAll()、删除全部 removeAll()、返回迭代器 iterator() 等。
http请求过程
- 浏览器发起请求-> 解析域名得到ip进行TCP连接 ->浏览器发送HTTP请求和头信息发送->服务器对浏览器进行应答,响应头信息和浏览器所需的内容-> 关闭TCP连接或保持-> 浏览器得到数据数据进行操作。
进程间的通信方式有哪些
-
1、无名管道通信
无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
2、高级管道通信
高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
3、有名管道通信
有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
4、消息队列通信
消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
5、信号量通信
信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
6、信号
信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
7、共享内存通信
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
8、套接字通信
套接字( socket ) : 套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
之前写过一个课程设计:基于Internet的Linux客户机/服务器系统通讯设计与实现
是利用sock通信实现的,可以参考一下。
linux命令:查进程号为xx的进程信息;查以py为结尾的文件进程有哪些
-
ps -u --pid 8012(pid) ps -aux | grep ".*.py"
了解单测吗?
算法题:两个有序数组合并后排序
对算法进行用例设计
如何测试微信聊天界面
数据库题:两个表,一个是学生id和姓名,另一个是学生id和分数,选出平均分大于60的学生的姓名
无反问环节~ select student.name from student join score on student.id=score.id group by student.name having avg(score.fenshu)>60
面完第二天收到了二面的通知,等二面结束后再来写面经
二面面经1h20min
tcp与http有什么区别
- TCP是传输层协议,定义数据传输和连接方式的规范。握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
HTTP 超文本传送协议(Hypertext Transfer Protocol )是应用层协议,定义的是传输数据的内容的规范。
HTTP协议中的数据是利用TCP协议传输的,特点是客户端发送的每次请求都需要服务器回送响应,它是TCP协议族中的一种,默认使用 TCP 80端口。
好比网络是路,TCP是跑在路上的车,HTTP是车上的人。每个网站内容不一样,就像车上的每个人有不同的故事一样。
http状态码
-
分类 分类描述 1** 信息,服务器收到请求,需要请求者继续执行操作 2** 成功,操作被成功接收并处理 3** 重定向,需要进一步的操作以完成请求 4** 客户端错误,请求包含语法错误或无法完成请求 5** 服务器错误,服务器在处理请求的过程中发生了错误
如何在后台运行一个程序
- ./test.sh &
vim打开一个文件,如何找到error字样的关键字
-
方式一:
不过没关系,你在命令模式下敲斜杆( / )这时在状态栏
(也就是屏幕左下脚)就出现了 “/” 然后输入你要查找的关键字敲回车就可以了。
如果你要继续查找此关键字,敲字符 n 就可以继续查找了。
方式二:
vim打开要查看的日志文件,shift+g定位到最下边,然后?要查找的字符串,回车
如果你要继续查找此关键字,敲字符 n 就可以继续查找了
如何查到a.py进程,并杀掉
- ps -ef | grep a.py| sudo xargs kill -9
查找一个文件中error出现的次数(这个之前没用过,没答上来,后来查了一下):
cat a.txt | grep -o error | wc -l
一道数据库的题,就是一个班级表,有名字和id,一个成绩表,有名字,id,学科,学科成绩,找出成绩及格并且班级人数大于20人的班级
select bj.id from bj join score on bj.id=score.id group by bj.id having score.fenshu>60 and count(*)>20
算法:十亿条数据,每条记录了卖货的时间和商品,找出卖的最好的100件商品,先说思路(小顶堆)
实现堆排序
-
先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000)。 优化的方法:可以把所有10亿个数据分组存放,比如分别放在1000个文件中。这样处理就可以分别在每个文件的10^6个数据中找出最大的10000个数,合并到一起在再找出最终的结果。
这篇博客详细记录了一次技术面试的过程,涉及Linux命令、TCP与HTTP的区别、数据库查询以及排序算法等核心知识点。面试者深入探讨了TCP的连接方式、HTTP的应用层特性,解析了HTTP状态码的意义,并解答了如何在后台运行程序、查找与终止进程等问题。此外,还讨论了如何在海量数据中找出最畅销的商品,涉及堆排序的优化策略。面试中还涵盖了数据库查询,例如查找平均分超过60的学生及其姓名,以及找出特定条件的班级。整个面试展示了面试者扎实的技术基础和问题解决能力。
2534

被折叠的 条评论
为什么被折叠?



