腾讯网易面试题刷题

一面:

HashMap、HashTable、ConcurrentHashMap三连

Java 基础知识必问问题

linux查看文件和目录的磁盘占有率、查看端口被哪个进程占用

du -h 文件名
lsof -i:22

前者必须在root用户下,推荐用后者netstat是一个很好用的工具。

netstat -tunlp |grep 端口号

进程通信,哪个最快,共享内存实现原理

链表反转 

(LC 经典面试题目)

TCP、UDP区别

TCP面向连接可靠基于字节流

UDP无连接不可靠数据报文

常见http方法、get和post区别

redis数据结构,跳跃表,epoll

设计模式

equals和hashcode

二面:

股票最大收益             

(LC经典题目)

n!末尾有多少个0   

等价于n!有多少个5因子

redis为什么快?

1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);

2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;

3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

4、使用多路I/O复用模型,非阻塞IO;

5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

ningx为什么快?

Nginx基于事件模型(异步方式)提供服务,更适合每秒连接数和请求数同时非线性增长的情况。即使负载增加了,内存和CPU使用事件数量始终保持可预期。Nginx使用普通的硬件就能在一个服务器上处理数万的并发连接。这就是Nginx高性能的第一个原因。

B+树好处,为什么1000W后就效果不好了

树的深度太深了,效率降低

HashMap碰撞的概率? 没懂问的什么意思,然后让我推导1000W个数put碰撞的概率??瞎写了一通

至此对1000W这个数产生了恐惧

三面:

问项目细节,不相关的项目也问了

有些问题不记得了,最开始还做了个现场笔试。。。

有个智力题,金条分为相连的7段,给一个人发7天工资,怎么发切断次数最少

项目中第三方检验是异步的嘛?

说一说反射吧

在什么情况下会使用反射

反射有什么缺点

什么是抽象类

static关键字的用法

如何避免栈溢出

栈溢出和堆溢出的区别

如何避免堆溢出

什么是CA证书

有什么加密算法

对称加密和非对称加密

什么时候使用RSA

非对称加密

有什么排序算法

基数排序原理

有什么设计模式

观察者模式

什么是xss攻击

小程序有可能存在xss攻击吗?

介绍一下数据库的锁

什么时候会存在数据库死锁

 

算法题:

52张牌,发给四个人,设计一个随机算法。

将排洗好,一人一张一张的发,发13张,就是等概率的。

 


网易互娱一面:
1、static

静态变量,改变函数作用域。
2、虚函数,具体怎么实现?详细讲讲,具体一点。

虚函数,虚函数表,虚函数表指针。
3、指针引用

指针的引用,是ok的。没有指向引用的指针
4、new能free么?为什么?

可以,但不建议
5、内存管理,详细讲讲,定义一个数组,它的内存管理怎么搞?
6、文本到执行文件四个过程,静态和动态链接的区别,好处?

预处理,编译,汇编,连接

     动态链接出现的原因就是为了解决静态链接中提到的两个问题,一方面是空间浪费,另外一方面是更新困难。下面介绍一下如何解决这两个问题。

2.动态链接的原理
        动态链接的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件。下面简单介绍动态链接的过程:

动态链接的优点显而易见,就是即使需要每个程序都依赖同一个库,但是该库不会像静态链接那样在内存中存在多分,副本,而是这多个程序在执行时共享同一份副本;另一个优点是,更新也比较方便,更新时只需要替换原来的目标文件,而无需将所有的程序再重新链接一遍。当程序下一次运行时,新版本的目标文件会被自动加载到内存并且链接起来,程序就完成了升级的目标。但是动态链接也是有缺点的,因为把链接推迟到了程序运行时,所以每次执行程序都需要进行链接,所以性能会有一定损失。

        据估算,动态链接和静态链接相比,性能损失大约在5%以下。经过实践证明,这点性能损失用来换区程序在空间上的节省和程序构建和升级时的灵活性是值得的。
7、进程线程?网页是多线程还是多进程?为什么?怎么细分?哪些用进程?哪些用线程?具体一点。
8、TCP、UDP?游戏角色移动,TCP还是UDP?为什么?说说这两个可能遇到的错误情况,具体一点?有了UDP为啥要TCP,有了TCP为啥要UDP,具体一点。
9、死锁条件?怎么解决?具体形容一下怎么个情况是死锁?
10、线程读取公共资源怎么同步?具体一点。
11、select、poll、epoll,具体讲讲。
12、三握、四挥?具体一点,错了怎么办?
13、HTTP、HTTP1.0 1.1 2.0、HTTPS,具体一点。
14、URL输入过程,具体一点。
15、手撕代码:现在有一个int数组,试找出数组中的一个数,使得该数右边的所有数总和减去左边所有数总和等于该数本身。不能暴力,时间复杂度n。

面试官:URL输入到渲染过程?
我:DNS解析、域名变IP、TCP连接、HTTP请求、回应请求返回html、渲染。
面试官:详细讲讲。
我:首先DNS解析,迭代和递归,巴拉巴拉。 (DNS解析的具体过程,面试也会考)
面试官:渲染知道么?
我:了解一点。
面试官:CPU或者GPU随便说一个。

我:那我就GPU吧,三个阶段:应用阶段:裁剪、视锥算法、场景图、四叉树八叉树kd树;几何阶段:坐标系变换,物体、世界、摄像机、屏幕坐标系,旋转,平移,比例;光栅化阶段:光栅化、alpha测试、模块测试、深度测试、抖动处理巴拉巴拉。
面试官:你不是挺懂的么?
我:(当然啦,我刚看过)还好还好。
4、
面试官:那我们来博弈吧?两堆石子,一堆9个,一堆5个,每次可以从任意堆取任意个,你先来,怎么必赢?
我:(思考很久)那我们来玩几把吧?
面试官:可以。
(两把之后)
我:我知道怎么赢了。
面试官:不行,我跟你玩就等于把答案告诉你了,这次换三堆,3,4,5,还是你先取,我不跟你玩了,你怎么必赢?
(一段时间后,我赢了。。。)
5、
面试官:用什么手机?内存?像素?电脑内存?处理器?平时遇到什么问题?怎么解决?
面试官:学校项目做什么?
我:虚拟现实,opengl巴拉巴拉。
面试官:实习项目做什么?
我:web页面,java的,spring+springMVC+mybatis。
面试官:手机项目做过么?
我:做过一个app。
面试官:那你做得挺广的啊?
我:(姨母笑)
6、
面试官:广州或者杭州能接受么?
我:(欣喜)可以可以可以。
面试官:女朋友呢?
我:在广州!
面试官:好了差不多我了解完了,就到这里吧,等hr通知。
我:多久呢?还有hr面么?
面试官:我只负责二面,具体也不清楚。
(没让我问个问题就走了,我还想问初级游戏研发和游戏研发有啥区别呢)
over。。。。。。
6天之后,意向书。

你可能感兴趣的:(算法)