Heim Backend-Entwicklung PHP-Tutorial 面试有关问题:给你一个文本文件,里面存储了一亿个QQ号,请用程序将其由小到大排序,汗呀!

面试有关问题:给你一个文本文件,里面存储了一亿个QQ号,请用程序将其由小到大排序,汗呀!

Jun 13, 2016 am 10:00 AM
bit hash memcache quot

面试问题:给你一个文本文件,里面存储了一亿个QQ号,请用程序将其由小到大排序,汗呀!..
面试问题:给你一个文本文件,里面存储了一亿个QQ号,请用程序将其由小到大排序,汗呀!..
求高手讲解思路!
还有其它问题:
比如Memcache的运行机制,它的工作原理它有什么优缺点!
现有一个库存100件的产品要进行秒杀,在秒杀过程中的秒杀人数远远超过库存,请问你将如何处理,应该注意什么问题!
请谈谈你对Mysql的优化的见解,或者说如果让你设计一个数据库,你将怎样设计并优化!
有高手吗,今天面试都自己认为都答得不太理想,求指教,还有下面的面试!
小弟的刚刚被裁员,本来就冬天,真的好冷啊!


------解决方案--------------------
排序的问题想不出来什么好办法,有没有更具体的限制条件,比如运行时间和内存?
如果都不限制直接sort函数就行,里面是用的快速排序法(quicksort),理论上的效率应该是最高的,况且人家是native code,怎么也比php代码里模拟一个排序算法快。

memcache的运行机制是使用职守进程开辟一块内存空间用来保存key/value数据,所有的请求和应用都共用这些数据。优点是存取速度快,适合用来缓存频繁读写的数据。缺点是占用内存,同时只能通过key检索,无法进行关系查询(SQL等)。

要保证原子操作,使用一定的锁机制防止多个请求同时操作一个数据造成效果与预期不符。

mysql数据库优化主要是索引和分表,为了性能可以为所有需要排序和检索的字段建立索引,并通过水平或垂直分表方式提高效率。
------解决方案--------------------
目的肯定不是让你投机,导入数据库,建索引导出,不过可以提一下


遍历一遍,将号码按大小,写入合适的文件。。。比如约定10万一个号码段

比如10,000,写在第0个文件,100,000,001,属于第1K个文件里面

排序每一个文件数据,拼接文件

排序的时候,如果文件较大,这里根据文件大小,大概能估计号码数量级的。。如果号码量少,可选择快排,否则,

创建一个10万的数组,再次遍历,arr[qqnum-i*100000]+1;

遍历数组,依数组值,增量写入号码即可

复杂度是O(n),O(nlogn)之间
------解决方案--------------------
这面试题有点眼熟啊,算法板块貌似讨论过,所以我回答用bitmap,空间换时间。
而且实际要做可能需要分段处理,比如5-7位的qq直接bit hash,7-10位的bit hash值 + 1000000

PHP code
<?phpset_time_limit (0);//5-7位qq$s = '0';$s{9999999}     = 1;$s{22334}       = 1;$s{375345}      = 1;$i = 10000;while(isset($s{$i})){        if($s{$i} == 1) echo "QQ:".$i."<br/>";                                                                                                                        $i++;}?><br><font color="#e78608">------解决方案--------------------</font><br>
Nach dem Login kopieren
探讨

这面试题有点眼熟啊,算法板块貌似讨论过,所以我回答用bitmap,空间换时间。
而且实际要做可能需要分段处理,比如5-7位的qq直接bit hash,7-10位的bit hash值 + 1000000
PHP code
set_time_limit(0);
//5-7位qq
$s = '0';
$s{9999999} = 1;
$s{22334} = 1;
……

------解决方案--------------------
探讨

跟编程珠玑里面的排序电话号码道理应该是一样的.1亿个qq号,就需要一亿个位,大概是11MB
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verwende ich Memcache in der PHP-Entwicklung? Wie verwende ich Memcache in der PHP-Entwicklung? Nov 07, 2023 pm 12:49 PM

Bei der Webentwicklung müssen wir häufig Caching-Technologie verwenden, um die Leistung und Reaktionsgeschwindigkeit der Website zu verbessern. Memcache ist eine beliebte Caching-Technologie, die jeden Datentyp zwischenspeichern kann und hohe Parallelität und hohe Verfügbarkeit unterstützt. In diesem Artikel wird die Verwendung von Memcache in der PHP-Entwicklung vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Memcache installieren Um Memcache verwenden zu können, müssen wir zunächst die Memcache-Erweiterung auf dem Server installieren. Im CentOS-Betriebssystem können Sie den folgenden Befehl verwenden

So implementieren Sie die Redis-Hash-Operation in PHP So implementieren Sie die Redis-Hash-Operation in PHP May 30, 2023 am 08:58 AM

Hash-Operation // Weisen Sie den Feldern in der Hash-Tabelle Werte zu. Gibt 1 bei Erfolg und 0 bei Fehler zurück. Wenn die Hash-Tabelle nicht vorhanden ist, wird die Tabelle zuerst erstellt und dann der Wert zugewiesen. Wenn das Feld bereits vorhanden ist, wird der alte Wert überschrieben. $ret=$redis->hSet('user','realname','jetwu');//Den Wert des angegebenen Felds in der Hash-Tabelle abrufen. Wenn die Hash-Tabelle nicht existiert, geben Sie „false“ zurück. $ret=$redis->hGet('user','rea

So verwenden Sie Redis-Bit-Operationen So verwenden Sie Redis-Bit-Operationen May 26, 2023 pm 02:14 PM

Der Redis-Testcode in diesem Artikel basiert auf der folgenden Umgebung: Betriebssystem: MacOS 64-Bit-Version: Redis5.0.764bit Betriebsmodus: Standalone-Modus Redis-Bit-Operation Reids-Bit-Operation wird auch Bit-Array-Operation und Bitmap genannt. Es bietet vier Befehle : SETBIT, GETBIT, BITCOUNT und BITTOP Zum Bearbeiten binärer Bit-Arrays. Schauen wir uns zunächst eine Reihe grundlegender Operationsbeispiele an. SETBIT-Syntax: SETBITkeyoffsetvalue ist: Befehlstasten-Offset 0/1 Der Befehl setbit wird verwendet, um den binären Bit-Einstellungswert des angegebenen Offsets in das Bit-Array zu schreiben. Der Offset beginnt bei 0 und zu zählen ist nur erlaubt Schreiben 1 oder 0,

Laravel-Entwicklung: Wie generiert man einen Passwort-Hash mit Laravel Hash? Laravel-Entwicklung: Wie generiert man einen Passwort-Hash mit Laravel Hash? Jun 17, 2023 am 10:59 AM

Laravel ist derzeit eines der beliebtesten PHP-Webframeworks und bietet Entwicklern viele leistungsstarke Funktionen und Komponenten, zu denen auch LaravelHash gehört. LaravelHash ist eine PHP-Bibliothek für Passwort-Hashing, mit der Sie Passwörter schützen und die Benutzerdaten Ihrer Anwendung sicherer machen können. In diesem Artikel erfahren wir, wie LaravelHash funktioniert und wie man es zum Hashen und Überprüfen von Passwörtern verwendet. Vorkenntnisse im Lernen von Lara sind erforderlich

Wie verwende ich Memcache für effiziente Datenlese- und -schreibvorgänge in der PHP-Entwicklung? Wie verwende ich Memcache für effiziente Datenlese- und -schreibvorgänge in der PHP-Entwicklung? Nov 07, 2023 pm 03:48 PM

In der PHP-Entwicklung kann die Verwendung des Memcache-Caching-Systems die Effizienz beim Lesen und Schreiben von Daten erheblich verbessern. Memcache ist ein speicherbasiertes Caching-System, das Daten im Speicher zwischenspeichern kann, um häufiges Lesen und Schreiben der Datenbank zu vermeiden. In diesem Artikel wird die Verwendung von Memcache in PHP für effiziente Lese- und Schreibvorgänge für Daten vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Memcache installieren und konfigurieren Zuerst müssen Sie die Memcache-Erweiterung auf dem Server installieren. kann passieren

Wie verwende ich Memcache für effizientes Schreiben und Abfragen von Daten in der PHP-Entwicklung? Wie verwende ich Memcache für effizientes Schreiben und Abfragen von Daten in der PHP-Entwicklung? Nov 07, 2023 pm 01:36 PM

Wie verwende ich Memcache für effizientes Schreiben und Abfragen von Daten in der PHP-Entwicklung? Mit der kontinuierlichen Weiterentwicklung von Internetanwendungen werden die Anforderungen an die Systemleistung immer höher. In der PHP-Entwicklung verwenden wir häufig verschiedene Caching-Technologien, um die Systemleistung und Reaktionsgeschwindigkeit zu verbessern. Eine der am häufigsten verwendeten Caching-Technologien ist Memcache. Memcache ist ein leistungsstarkes verteiltes Speicherobjekt-Caching-System, das zum Zwischenspeichern von Datenbankabfrageergebnissen, Seitenfragmenten, Sitzungsdaten usw. verwendet werden kann. Durch das Speichern von Daten im Speicher

Wie kann man unter Linux überprüfen, ob das System 32-Bit oder 64-Bit ist? Wie kann man unter Linux überprüfen, ob das System 32-Bit oder 64-Bit ist? Mar 01, 2024 pm 07:34 PM

CentOS ist eine Linux-Distribution, die von RHEL stammt und nach den Regeln des Open-Source-Codes kompiliert ist. Darüber hinaus bleibt die funktionale Kompatibilität mit RHEL erhalten und es handelt sich um ein kostenloses Open-Source-Betriebssystem, das Benutzer verwenden und ändern können, ohne Urheberrechtsgebühren zu zahlen. Unterscheidet CentOS unter Linux zwischen 32-Bit und 64-Bit? Einzelheiten finden Sie weiter unten. CentOS unterscheidet zwischen 32-Bit und 64-Bit!

Nutzung der Memcache-Caching-Technologie zur Verbesserung der gleichzeitigen Verarbeitungsfähigkeiten von PHP-Anwendungen Nutzung der Memcache-Caching-Technologie zur Verbesserung der gleichzeitigen Verarbeitungsfähigkeiten von PHP-Anwendungen May 18, 2023 am 08:12 AM

Mit der rasanten Entwicklung des Internets müssen sich immer mehr Anwendungen einer großen Anzahl gleichzeitiger Anforderungen stellen. Die Verbesserung der gleichzeitigen Verarbeitungsfähigkeiten von Anwendungen ist zu einem Problem geworden, das Entwickler lösen müssen. Unter ihnen ist die Verwendung der Memcache-Caching-Technologie zur Parallelitätsoptimierung zu einer relativ beliebten Lösung geworden. Memcache ist eine effiziente Caching-Technologie, die für große Webanwendungen, Datenbanken und verteilte Systeme geeignet ist. Sein Merkmal besteht darin, Daten im Speicher zu speichern, um Lese- und Schreibvorgänge mit hoher Geschwindigkeit zu ermöglichen. Während des Datenzugriffsprozesses von Webanwendungen

See all articles