一、美团
1.输入一个网址,在计算机网络5层模型中怎么传输
首先说一下计算机网络中的五层模型从上到下是,应用层,传输层,网络层,数据链接层,物理层
输入网址后是从应用层->传输层->网络层->数据链路层->物理层 然后到达服务器端的物理层->...应用层
例如
在浏览器中输入https://www.baidu.com后会发生什么?
1.系统自动在本地寻找hosts文件,该文件在Sysem32/etc下,如果该文件中已经记录该域名对应的IP地址则直接访问IP,没有的话执行域名解析。
2.域名解析,请求配置的DNS服务器,经过DNS服务器解析后获得一个目标IP地址。
3.准备访问目标IP,通过80号端口和按照Http协议生产一个报文。
4.访问IP,从上层的应用层已经生成的报文到传输层,网络层,物理层,层层装包生成最终报文,最后将数据发送出去。
5.寻找路由,从默认网关到路由器,再到下一跳路由器.......
6.在网络中多次转发,最后到达百度的服务器。
7.找到百度的服务器后等待百度主机的防火墙等等验证。
8.百度主机接受请求,并从物理网到应用层,层层拆包并检验数据,最后获得最终信息。
9.应用层解析后开始生成对应的HTML文件,装包并将文件数据返回给客户机。
10.主机经过网络的层层转发后收到了百度主机发来的HTML文件,拆包后交给浏览器,浏览器根据HTML文件进行渲染,最后生成页面。
2.插入排序
时间复杂度最坏o(n2) 最好 o(n)
3.举例:线程死锁。线程死锁的必要条件
最简单的线程死锁
线程死锁的必要条件:
1.互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
2.请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
4.环路等待条件:在发生死锁时,必然存在一个进程--资源的环形链。
4.做项目时,有哪些情况会造成网站崩溃
访问用户过多导致服务器瘫痪;内存泄露(丢失对已分配内存的引用);线程死锁;等
5.0-1背包问题怎么实现
深度递归或者动态规划,回答动态规划是个坑,因为会继续问动态规划的问题
6.数据库索引
可以加快查询速度
7.怎么设计数据库表
根据需求与功能设计数据库表格,比如我的是高校二课系统,该部分就有好几个实体,学生,老师,活动每个实体又包括好多属性,学生包括学号,姓名,学院,以及班级,等等还有就是学院编号等等。
8.视图是干什么用的?
视图是一个或者几个基本表导出的图,是个虚表,用来显示实时数据的,修改视图对数据库表没有影响
9.随便挑个项目,说说基本功能,用到了什么东西
10.java创建对象在内存中哪个区创建?堆中
局部变量---栈
数组、对象、new新建的实例 ---堆
静态成员、构造函数、常量池、线程池---方法区
window系统占用--本地方法区
11.内存泄露会导致什么?举个内存泄露的例子
不再会被使用的对象的内存不能被回收,就是内存泄露
对于运行在一般用户这边的应用程序来说,由于运行的时间不长,结束后会被操作系统回收,一般不会造成很大影响;
而对于服务来说比如跑在服务器上的程序,会长时间运行,如果有内存泄漏的话,会在运行过程中不断积累泄露的内存,最后沾满服务器的所有内存,导致瘫痪。
12.DNS解析的具体流程。一个域名是如何解析成ip的。
13.inux 如何查看内存占用?
cat /proc/meminfo这个命令
14.进程怎么查看?
ps -aux命令
15.python爬虫是怎么爬的?
16.讲讲生产者消费者模型?
并发编程问题。
17.给字符串,计算表达式的结果
第一步:把字符串表达式的中缀形式转为后缀形式,怎么转有一定的规则用到了栈。第二步:计算后缀表达式的值