Chinaunix首页 | 论坛 | 博客
  • 博客访问: 525033
  • 博文数量: 80
  • 博客积分: 1496
  • 博客等级: 上尉
  • 技术积分: 1292
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-18 11:24
个人简介

IT码农一个~

文章分类

全部博文(80)

文章存档

2020年(3)

2019年(7)

2017年(1)

2016年(2)

2015年(2)

2014年(26)

2013年(26)

2012年(2)

2011年(1)

2010年(1)

2008年(9)

我的朋友

分类: LINUX

2014-02-25 12:14:38

本文只是记录几个面试问题,没有严格的正确答案,
如果各位大大有好的解决方案
可用直接回复沟通。

1. Linux Swap交换分区长期处于满的状态说明了什么?

  对于应用程序来说,buffers/cached 是等于可用的,因为 buffer/cached 是为了提高文件读取
的性能,当应用程序需在用到内存的时候,buffer/cached 会很快地被回收。  
所以从应用程序的角度来说,可用内存=系统free memory + buffers + cached
当可用内存少于额定值的时候,就会开会进行交换。
交换将通过三个途径来减少系统中使用的物理页面的个数: 
1. 减少缓冲与页面 cache 的大小, 
2. 将系统 V 类型的内存页面交换出去, 
3. 换出或者丢弃页面。(Application  占用的内存页,也就是物理内存不足)。 
事实上,少量地使用 swap是不是影响到系统性能的。 
然而大量的swap说明了要么是swap设置不当,要么就是系统的可用内存很少了。

2. 服务器端有大量的Time_Wait状态的tcp socket, 说明了什么?
  tcp协议中,主动关闭连接的一方进入TIME_WAIT状态。此处需要 了解的是什么原因导致服务器关闭了这些连接?
然后就是出现这种问题该如何解决。 
  解决办法参考
   http://blog.csdn.net/tianmohust/article/details/7436157 
  

3. 如何设计一个不可被继承的c++类。
 这个参考 http://blog.csdn.net/lazybin/article/details/8372793 , 用友元 + private构造函数实现

4. 设计一个系统,存储一个号码和一个分数的排行榜,输入就是(int number, int score);
   此输入是很频繁的,然后总数据量很大,大概2亿+ 。
   要求实现以下接口: 1) 给定一个number, 快速返回其 score
                               2) 给定一个N(常数),返回排名前N名的 number 和 score 排行榜
                               3)   给定一个number, 返回在其前的N名玩家和后N名玩家
   从需求、性能、复杂度来分析。
   目前从大的方向来说,一种思路是在内存解决,一种是依赖数据库自身的操作。
   其实类似top(N)这种要么在内存用最小堆实现,不过这个会需要同步内存和数据库的数据,保持一致性。
   如果借助数据库,应该可以建立索引,然后 select top(N) 的方式做,不过具体性能未作验证。
   对于第3个接口,目前没有好的思路。


阅读(1186) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~