Skip to content

面试遇到的问题,没有回答出来记录 #37

Description

@luanguang

多技

  1. I/O复用
    这个跟select、poll、epoll有关,一个tcp链接一个进程,少的时候没关系,但是多了就有问题。于是有了一个进程里面有多个线程进行链接,但是没有立刻执行,在系统有数据返回的时候再循环这些线程,给需要的线程进行执行。这是select。
    而这样子循环也是很缓慢的,有性能问题。于是记录下每个线程的一个id,当系统返回数据的时候也传回id,就能直接去线程里查找这些id,不要每次都循环遍历。这是epoll。poll只是对select进行记录,并没有实质性的大变化。

  2. redis为什么快
    首先redis是将记录在内存当中的。而内存的速度原本就要比硬盘快上很多,不需要进行硬盘读取的I/O。
    数据结构简单,他是Nosql。
    单线程阻塞I/O。不需要进行线程之间的切换(历史问题,现已经改成多线程)。

  3. 258M的服务器内存,如何对1G的文件进行排序。
    这是一个很典型使用归并算法的题目,还是需要申请磁盘空间,时间复杂度是nlogn。优化之后最好能达到n。

  4. 简单的依赖注入和控制反转
    依赖注入很简单,构造函数,然后传特定的类进去。控制反转则需要进行判断他需要什么类,然后传进去。

  5. 并发时QPS多少。
    这个由于是运维当时观察,我并没有看到是多少,至于升级的服务器还是由运维来决定的。
    pv 是指页面被浏览的次数,比如你打开一网页,那么这个网站的pv就算加了一次;
    tps是每秒内的事务数,比如执行了dml操作,那么相应的tps会增加;
    qps是指每秒内查询次数,比如执行了select操作,相应的qps会增加。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions