ホームページ バックエンド開発 PHPチュートリアル 面接関連の質問: 1 億個の QQ 番号が保存されたテキスト ファイルを渡します。プログラムを使用して、小さいものから大きいものまで並べ替えてください。

面接関連の質問: 1 億個の QQ 番号が保存されたテキスト ファイルを渡します。プログラムを使用して、小さいものから大きいものまで並べ替えてください。

Jun 13, 2016 pm 01:47 PM
bit hash memcache quot

面接の質問: 1 億個の QQ 番号が保存されたテキスト ファイルが与えられました。プログラムを使用して、小さいものから大きなものまで並べ替えてください。汗!
面接の質問: 1 億個の QQ 番号が保存されたテキスト ファイルが与えられました。 QQ 番号。QQ 番号は何億もあります。プログラムを使用して小さい番号から大きい番号に並べ替えてください。
専門家にアイデアを説明してもらいましょう。
他にも質問があります:
たとえば、Memcache の動作メカニズム、その動作原理、その長所と短所は何ですか。
現在在庫が 100 個ある商品がフラッシュ セールで販売されますが、在庫数をはるかに超えて販売されています。どのように対処しますか?注意すべきですか!
Mysql の最適化についての意見、またはデータベースを設計するように頼まれた場合、どのように設計して最適化しますか?
今日の私の答えは理想的ではないと思いましたが、専門家はいますか?インタビュー、そして以下のインタビューをご覧ください。
私の弟は解雇されたばかりです。もう冬で、とても寒いです。


-----解決策---------------------------- -
解決策の問題 良い解決策がない場合、実行時間やメモリなど、より具体的な制限はありますか?
直接ソート機能を制限しない場合は、クイックソートが使用されており、理論的な効率が最も高いはずです。また、ネイティブコードなので、ソートアルゴリズムをシミュレートするよりも高速です。 PHPコードで。

memcache の動作メカニズムは、責任のあるプロセスを使用してメモリ空間を開き、すべてのリクエストとアプリケーションがこのデータを共有します。アクセス速度が速く、頻繁に読み書きするデータのキャッシュに適しているのがメリットです。欠点は、メモリを消費することと、キーでしか取得できず、リレーショナル クエリ (SQL など) が実行できないことです。

アトミックな操作を保証するには、特定のロック メカニズムを使用して、複数のリクエストが 1 つのデータに対して同時に操作され、結果が期待と矛盾することを防ぎます。

MySQL データベースの最適化は、主にインデックス作成とテーブル パーティショニングに関するもので、パフォーマンスを向上させるために、並べ替えと取得が必要なすべてのフィールドのインデックスを作成し、水平または垂直テーブル パーティショニングによって効率を向上させることができます。
------解決策----------------------
目的は決して推測してインポートすることではありませんデータベースを構築してエクスポートしますが、


を指定して一度スキャンし、サイズに応じて適切なファイルに数値を書き込むことができます。 。 。たとえば、100,000 という数値セグメントが合意されます

たとえば、0 番目のファイルには 10,000 が書き込まれ、100,000,001 は 1K 番目のファイルに属します

各ファイルのデータを並べ替えてファイルを結合します

並べ替える場合、ファイルが大きい場合は、ファイル サイズに基づいて、数値の大きさを推定できる可能性があります。 。数値が小さい場合は、クイック ソートを選択できます。それ以外の場合、

は 100,000 の配列を作成し、それを再度走査します。arr[qqnum-i*100000]+1; は配列を走査します。配列の値に従って、数値を増分して書き込むだけです

計算量は O(n) と O(nlogn) の間です

------解決策---------
このインタビューの質問は、アルゴリズムのセクションに少し見覚えがあるように思えます。似ています 議論されていたので、ビットマップを使用して空間を時間に置き換えて回答しました。 実際に実行するには、5 ~ 7 桁の qq ダイレクト ビット ハッシュ、7 ~ 10 桁のビット ハッシュ値 + 1000000

PHP コード
などの分割された処理が必要になる場合があります。 "; $i++; } ?>

------解決策---------<br><font color="#e78608"></font><br>話し合う
ログイン後にコピー
このインタビューの質問は、アルゴリズムのセクションで議論されているようなので、ビットマップを使用して時間と交換して答えました。
実際の処理では、5 ~ 7 桁の qq ダイレクト ビット ハッシュ、7 ~ 10 桁のビット ハッシュ値 + 1000000
PHP コード
set_time_limit (0) など、細分化された処理が必要になる場合があります。 );
//5-7 桁 qq
$s = '0';
$s{9999999} = 1;
$s{22334} = 1;
… …


------解決策---------<br><font color="#e78608"></font><br>話し合う
Zhuji での電話番号の並べ替えの原則は同じはずです。1 億の QQ 番号には 1 億桁が必要で、これは約 11MB です


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP開発でMemcacheを使用するにはどうすればよいですか? PHP開発でMemcacheを使用するにはどうすればよいですか? Nov 07, 2023 pm 12:49 PM

Web 開発では、Web サイトのパフォーマンスと応答速度を向上させるためにキャッシュ テクノロジを使用する必要があることがよくあります。 Memcache は、あらゆる種類のデータをキャッシュでき、高い同時実行性と高可用性をサポートする一般的なキャッシュ テクノロジです。この記事では、PHP 開発で Memcache を使用する方法を紹介し、具体的なコード例を示します。 1. Memcache のインストール Memcache を使用するには、まずサーバーに Memcache 拡張機能をインストールする必要があります。 CentOS オペレーティング システムでは、次のコマンドを使用できます。

Redis ビット操作の使用方法 Redis ビット操作の使用方法 May 26, 2023 pm 02:14 PM

この記事の Redis テスト コードは次の環境に基づいています: オペレーティング システム: MacOS 64 ビット バージョン: Redis5.0.764bit 動作モード: スタンドアロン モード Redis ビット操作 reids ビット操作は、ビット配列操作およびビットマップとも呼ばれ、4 つのコマンドを提供します。 : SETBIT、GETBIT、BITCOUNT、および BITTOP バイナリ ビット配列を操作します。まず、一連の基本的な操作例を見てみましょう SETBIT 構文: SETBITkeyoffsetvalue は: コマンド キー オフセット 0/1 setbit コマンドは、指定されたオフセットのバイナリ ビット設定値をビット配列に書き込むために使用されます。オフセットは 0 からカウントを開始し、 1 または 0 の書き込みのみが許可されます。

PHPでRedisハッシュ操作を実装する方法 PHPでRedisハッシュ操作を実装する方法 May 30, 2023 am 08:58 AM

ハッシュ演算 //ハッシュテーブルのフィールドに値を代入します。成功した場合は 1 を返し、失敗した場合は 0 を返します。ハッシュ テーブルが存在しない場合は、まずテーブルが作成されてから値が割り当てられ、フィールドが既に存在する場合は古い値が上書きされます。 $ret=$redis->hSet('user','realname','jetwu');//ハッシュ テーブル内の指定されたフィールドの値を取得します。ハッシュ テーブルが存在しない場合は false を返します。 $ret=$redis->hGet('ユーザー','rea

Laravel 開発: Laravel ハッシュを使用してパスワード ハッシュを生成するにはどうすればよいですか? Laravel 開発: Laravel ハッシュを使用してパスワード ハッシュを生成するにはどうすればよいですか? Jun 17, 2023 am 10:59 AM

Laravel は現在最も人気のある PHP Web フレームワークの 1 つであり、開発者に多くの強力な機能とコンポーネントを提供しており、LaravelHash もその 1 つです。 LaravelHash は、パスワードを安全に保ち、アプリケーションのユーザー データをより安全にするために使用できるパスワード ハッシュ用の PHP ライブラリです。この記事では、LaravelHash の仕組みと、LaravelHash を使用してパスワードをハッシュし検証する方法を学びます。 Lara を学習するための前提知識

PHP 開発で効率的なデータの書き込みとクエリを行うために Memcache を使用するにはどうすればよいですか? PHP 開発で効率的なデータの書き込みとクエリを行うために Memcache を使用するにはどうすればよいですか? Nov 07, 2023 pm 01:36 PM

PHP 開発で効率的なデータの書き込みとクエリを行うために Memcache を使用するにはどうすればよいですか?インターネット アプリケーションの継続的な開発に伴い、システム パフォーマンスの要件はますます高くなっています。 PHP開発では、システムのパフォーマンスや応答速度を向上させるために、さまざまなキャッシュ技術を使用することがよくあります。一般的に使用されるキャッシュ テクノロジの 1 つは Memcache です。 Memcache は、データベース クエリ結果、ページ フラグメント、セッション データなどをキャッシュするために使用できる高性能分散メモリ オブジェクト キャッシング システムです。データをメモリに保存することで

PHP 開発で効率的なデータの読み取りおよび書き込み操作を行うために Memcache を使用するにはどうすればよいですか? PHP 開発で効率的なデータの読み取りおよび書き込み操作を行うために Memcache を使用するにはどうすればよいですか? Nov 07, 2023 pm 03:48 PM

PHP 開発では、Memcache キャッシュ システムを使用すると、データの読み取りと書き込みの効率が大幅に向上します。 Memcache は、データベースの頻繁な読み取りと書き込みを回避するためにデータをメモリにキャッシュできるメモリベースのキャッシュ システムです。この記事では、PHP で Memcache を使用して効率的なデータの読み取りおよび書き込み操作を行う方法を紹介し、具体的なコード例を示します。 1. Memcache のインストールと構成 まず、サーバーに Memcache 拡張機能をインストールする必要があります。通過できる

2025年のトップ10仮想通貨取引プラットフォーム:明確な選択 2025年のトップ10仮想通貨取引プラットフォーム:明確な選択 Feb 25, 2025 pm 12:12 PM

2025年のトップ10の仮想通貨プラットフォーム:1。ユーザーエクスペリエンスやその他の要因に最適です。

Linux でシステムが 32 ビットか 64 ビットかを確認するにはどうすればよいですか? Linux でシステムが 32 ビットか 64 ビットかを確認するにはどうすればよいですか? Mar 01, 2024 pm 07:34 PM

CentOS は、RHEL を起源とする Linux ディストリビューションであり、オープン ソース コードの規制に従ってコンパイルされています。さらに、RHEL との機能互換性が維持されており、ユーザーは著作権料を支払うことなく使用および変更できる無料のオープンソース オペレーティング システムです。では、CentOS は Linux の 32 ビットと 64 ビットを区別しますか? 詳細については、以下を参照してください。 CentOS は 32 ビットと 64 ビットを区別します! 主な違い: CentOS32 ビット システムは主に PC 用にリリースされます; CentOS64 ビット システムは主に大規模科学技術コンピューティングを目的としています; 64 ビット Linux システムは主に 64 ビット ハードウェア システムにインストールされます; 32 ビット

See all articles