面试题刷题 9.12

1.多进程多线程区别

常规必考问题

2.tcp/ip四层每一层都给报文具体加一些什么东西

 

3.输入一个url到获取返回资源的全过程

DNS,TCP,HTTP

4.DNS怎么解析找到ip地址的

像DNS服务器发送域名报文,解析得到ip地址。

5.多进程之间内存共享

共享内存

6.两个编程题

7.三次握手,四次挥手过程

TCP连接建立和断开过程

8.为什么三次握手,不四次握手



9月9号
一面40分钟左右
自我介绍
说一下做得对好的项目
虚函数是什么


内存对齐


STL熟吗,常用的容器


插入值给vector会怎么样(考虑扩容),怎么扩容的

vector扩容


迭代器失效是什么

一、序列式容器(数组式容器)

对于序列式容器(如vector,deque),序列式容器就是数组式容器,删除当前的iterator会使后面所有元素的iterator都失效。这是因为vetor,deque使用了连续分配的内存,删除一个元素导致后面所有的元素会向前移动一个位置。所以不能使用erase(iter++)的方式,还好erase方法可以返回下一个有效的iterator。

正确删除代码

for (auto iter = cont.begin(); iter != cont.end();)
{
   (*it)->doSomething();
   if (shouldDelete(*iter))
      iter = cont.erase(iter);  //erase删除元素,返回下一个迭代器
   else
      ++iter;
}

写一下用迭代器删除vector里的0

将上面()中的条件改为*iter == 0

 

迭代器失效的问题总结

四、总结

迭代器失效分三种情况考虑,也是分三种数据结构考虑,分别为数组型,链表型,树型数据结构。

数组型数据结构:该数据结构的元素是分配在连续的内存中,insert和erase操作,都会使得删除点和插入点之后的元素挪位置,所以,插入点和删除掉之后的迭代器全部失效,也就是说insert(*iter)(或erase(*iter)),然后在iter++,是没有意义的。解决方法:erase(*iter)的返回值是下一个有效迭代器的值。 iter =cont.erase(iter);

链表型数据结构:对于list型的数据结构,使用了不连续分配的内存,删除运算使指向删除位置的迭代器失效,但是不会失效其他迭代器.解决办法两种,erase(*iter)会返回下一个有效迭代器的值,或者erase(iter++).

树形数据结构: 使用红黑树来存储数据,插入不会使得任何迭代器失效;删除运算使指向删除位置的迭代器失效,但是不会失效其他迭代器.erase迭代器只是被删元素的迭代器失效,但是返回值为void,所以要采用erase(iter++)的方式删除迭代器。

注意:经过erase(iter)之后的迭代器完全失效,该迭代器iter不能参与任何运算,包括iter++,*ite


TCP四次挥手


粘包拆包,怎么处理


有没有抓过包

wireshark抓过包。
select,Poll,epoll区别
epoll触发机制
TCP和UDP区别
UDP怎么实现可靠传输,可以学一下TCP怎么保证的(每个包有序号,丢包重传)

在应用层实现可靠传输


输入一个url浏览器做了什么
进程线程区别
进程间通信方法有那种
怎么保证线程安全(加锁。。。)除了加锁呢(不知道。。。)怎么保证锁的释放(不知道)

信号量和条件变量
撕代码,判断是不是回文
有什么想问的

还有一些其他的隔了一段时间不是很记得清了,顺序也大致这样

二面三十分钟左右
自我介绍
一些关于项目的常规问题,还有用了锁怎么保证中途退出的释放,主要是接下来的。。。
函数return的时候做了些什么事情(如果函数内申请内存返回指向的指针的话会指向一个销毁的内存)

 

 

一开始打电话过来,腾讯云,我听成了迅雷云。。。。

我说我没有投过啊,怎么打电话啦??然后我想,也好,现在复习了那么多天,攒个面经也好~

然后就开始“迅雷云”的面试

1.了解字节序吗?讲一下。

字节在计算机中存储的顺序

2.知道怎么实现非阻塞TCP吗?

Linux C TCP函数

3.学过C 吗?

只在本科的时候学过,找工作用的主语言是JAVA

4.那讲一下字节对齐吧

 

5.讲一下const

扯了一下数值不可变和地址不可变

6.讲一下static

7.讲一下四次挥手过程?TIME_WAIT状态是在哪里发生的

我巴拉巴拉了很多,最后我说TIME_WATI只在客户端发生的,为了保证服务端与客户端完全断开连接,所以要等待2msl

8.知道多线程和多进程的区别吗?有什么优点呢

我就说了一下进程和线程的区别,切换优缺点,之间的通信方式

9linux用过吗?怎么查看cpu负载 

top命令

10 那么我做一道题吧,二叉搜索树,怎么找出第k大的节点

我说有中序遍历,直接找到第k个数

11再问一个,实现一个数组的全排列

递归回溯

12 HTTPS的握手过程了解不?


 

1.协程了解过么?

协程是更轻量级的线程。用于解决线程间切换和进程间切换的通病(对内核开销过大),协程各个状态(阻塞、运行)的切换是由程序控制,而不是内核控制,减少了开销。

功能特点:通过应用层程序,记录上下文栈区,实现在程序执行过程中的跳跃执行。由此可以选择不阻塞的部分执行提升运行效率。

 

2.写代码,链表的插入与删除的题目 (Leetcode 原题,删除所有给定值的元素)

从单向链表中删除指定值的节点

输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。

 


 

面经在这里~

【阿里-阿里云 Java研发工程师】

一面:40分钟

1、自我介绍

2、TCP如何保证可靠传输

TCP 可靠传输

  • 确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。
  • 数据校验
  • 数据合理分片和排序:
  •  

3、数据中心网络下TCP的缺陷不足

4、Http2.0和http的区别,2.0多了什么

5、进程线程区别

6、jvm相关,内存模型,垃圾回收,运行时常量池具体讲一下,final static存在哪里

7、B树、B+树 (数据结构)

8、nio讲一下,selector和epoll的区别

(大概就是简历面)

 

二面:57分钟(两个面试官,距离上一面隔三天)

1、Java中,char型变量能不能存储一个汉字

可以

2、不加任何修饰符的java最像哪个访问修饰符(public、protected、private、默认)
private

3、java线程启动、终止方式

4、一个对象调用hashcode返回的是什么?重写equals还是重写hashcode还是同时,为什么?

5、http post和get区别?http请求过来之后如何查找用户名?http协议cokkie相关?如何让无状态的http协议使得登录过程变得有状态(具体记不清了,有点迷……就是http问了好多好细那种)

6、设计模式讲一下。单例模式,用什么方法确保懒汉式线程安全(这里给自己挖坑了,关于线程安不安全的)

7、java中如何实现共享内存?如何在两个进程***享数据?如何让两个线程共享数据?

8、线程生命周期及互相转化?wait、notify等方法属于哪个类(Object)?为什么不属于Thread?(锁是对象)

9、关系型数据库相关:乐观锁悲观锁、使用场景、哪个性能好

10、java、python怎么同时用?(和我的毕设有点关系,我自己提到的)

11、hashmap相关、为社么用红黑树 (当发生Hash冲突时提高查询效率)

 

三面:26分钟(蚂蚁的声音甜美的小姐姐给我进行的交叉面,隔一天)

1、自我介绍

2、实习经历详细讲

3、项目方面各种讲、实验室研究方向、项目遇到最大的困难等等

4、java企业级应用有没有实际用过?(我说Spring这些没用过,但是看过概念性的东西,然后就没有继续问我了)

 

四面:38分钟(交叉面,隔4天)

1、自我介绍

2、问项目(有个项目写的是安卓,就问起了安卓…… 然后我就把知道的回答了,讲不下去了我说我投的Java开发,所以要前面说清楚……)

3、问java哪方面熟悉,(我说后台)然后……开始给自己挖坑了……

3.1 final各种问…… 出了个题目(面试官口述代码出题) 大概意思是:final引用不能再修改了……(对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。)

3.2 引用(四个强度之类的)

3.3 后台哪里平时会觉得很难

3.4 自己实现hashmap

4、问自己最熟悉的成就最大的项目(让我从技术方面讲…… 我感觉我说的乱七八糟的……)

5、http相关 cookie为啥要用,如何实现有状态啥的

(中间可能还有一点零碎的不太记得了)

 

五面:26分钟,HR面(隔五天)

1、自我介绍

2、关于地点选择,纯聊天,没技术,当时马老师996轰动一时,HR问我怎么看待996,然后解释了一下马老师为啥说996?

4、问问题

 

直通终面:27min 最后一轮技术面(9/4)

1、自我介绍

2、网络七层模型、TCP一些(基本概念、怎么保证可靠之类的)

TCP 可靠传输

1、确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。

2、数据校验

3、数据合理分片和排序:

3、数据结构哪些,用哪些,咋用的(我就链表、树、堆、栈这些)我说我树看的会多一点,因为后面项目里巴拉巴拉,然后他说那树搜索说一说,(反正我自己挖的坑,爬也得爬出来,学名记不住我就举例子,诶)

4、hashmap (面试官继续问我,那map这些用过吗,我才反应过来,hhh其实我在上面如果说了hashmap他就不会问上面的了自己挖坑)

5、数据库三大范式

6、找了一个项目给他讲(比较细)

7、实习经历(实习里的东西略细)

8、地点选择

9、有啥要问他的

(中间可能有些忘记了,反正真的特别特别基础,jvm线程啥的一个没问,我甚至都以为重新开始了简历面)

 

直通终面:HR面 22min (9/6)

春招也是她面了我,就自我介绍啊之类的都没聊,就问了两个问题:

1、直通终面技术面P9面的我,自己感觉那里是很能胜任的,哪里还需要继续向师兄师姐学习的?

2、关于选择的问题:你有哪些选择,(选择之间的比较)、如果给了你offer你拒绝了(必须成立假设)那会是什么原因、工作地等,大概就是这些,HR真的好厉害!就是能随时从你说的话里提出问题和难题扔给你!

hr面完时隔5天,收到意向书。(整个流程我觉得很快)

 

?????下一个面经

 

【远景-远景智能 Java研发工程师】

一面:牛客视频,一个小时(面试官看着我我看着他,怪尴尬的,第一次视频面,有些东西我不太直接说得出来的,我都是结合项目、结合实习的东西给他讲的,我觉得这个面试官比较喜欢结合讲)

1、自我介绍

2、面试官介绍他的部门(好像是IOT然后分三个大部门他们是中间件的,然后给上层下层用)

3、面向对象的特征,我的理解,延伸到继承和泛型,

4、面向对象的设计指导(??这是啥 他举了个例子,开闭啥的……这都是啥……)六大原则……我不知道……我真没复习……我要把它背下来?

5、设计模式,知道哪些讲一讲…… 我说单例、观察者,他说单例太简单了来我们说一下观察者,然后我就根据发布/订阅结合观察者说了说,就延伸到了消息队列的一些性质了(后面基本上我都是结合项目、实习的东西说的)

6、问我上面这些基于什么协议,我说tcp,然后让我将tcp/udp一些,反正就三次握手啊、拥塞啊、超时重传啊、这些各种啊,网络这些吧反正……

TCP 可靠传输

1、确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。

2、数据校验

3、数据合理分片和排序:

7、然后开始问网络5层模型,每层都给数据包加了啥(我吧……瞎说了几个然后说记不太清了,他说没关系,反正这都是死记硬背的看看就行? 面试官真好)

8、还问了啥忘记了……

9、两个编程题,第k大的数 和 二叉树的层序遍历 (第一个题目没看时间复杂度直接用了arrays.sort,面试官后来提醒我了,但是我没时间写了,我就讲了正确的思路,没想到也过了)

10、有啥要问他的。

11、忘记是怎么延伸的了,问了数据库在设计表的时候有哪些需要注意的啊(反正我说的有点乱)

 

二面:南京现场,三四十分钟,8/23

1、简单自我介绍(超级简单不让你多说)

2、挑一个项目给他讲,过程中面试官会不断提问、不断让你想优化方法,只要给他讲清楚他满意

3、手撕代码:孩子们的游戏(牛客网)  约瑟夫问题

 

三面:南京现场,三十分钟左右,8/23,HR面

现场二面通过就会短信通知继续三面,一个温柔的HR老哥哥(不是小哥哥也不到叔叔年纪hhh),氛围友好、面试体验很好、总体就聊聊自己的期望、为啥来着之类的hr面经常聊的问题,最后告知一周内会有四面,就是技术大佬远程面试。

 

四面:首席架构师或技术VP面,电话,23分钟,9/3

1、就是问了简历的项目,问的比较细,面试官会抛出问题,然后我来回答,(问了两个项目)

2、希望远景能给我带来什么

3、远景比其他公司优势

4、面试官给我介绍了一下远景

9/6接到了oc,整个流程真的特别快!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值