インタビューの質問の要約
1. Cファンデーション
-
gccコンパイラの完全なコンパイルプロセスの機能は何ですか?
回答:前処理、コンパイル、アセンブリ、リンク。前処理:ヘッダーファイルの拡張/マクロの置換/コメントの削除/条件付きコンパイル。コンパイル:文法をチェックし、アセンブリを生成します。アセンブリ:アセンブリコードはマシンコードに変換されます。リンク:リンクして実行可能ファイルを生成します。
-
コールバック関数とは何ですか?
回答:コールバック関数は実行可能なコードセグメントであり、パラメーターとして他のコードに渡されます。その関数は、必要に応じてこの(コールバック関数)コードを簡単に呼び出すことです。
-
printf関数で%uを使用して住所を印刷できますか?
回答:いいえ。
符号なしかどうかにかかわらず、メモリに格納されるchar型の値は同じで、0xFFです。
printf( "%u")が出力されると、char型変数はint型に昇格されます。
charは符号付きの数値型であるため、記号で展開されます。a 0xFFから0xFFFFFFFFに拡張します(4294967295)。
unsigned charはゼロで拡張され、bは0xFFから0x000000FF(255)に拡張されます。 -
構造と労働組合の違い
回答:構造ユニオン。ユニオンとも呼ばれます。これは、プログラミング中にいくつかの異なるタイプの変数を同じメモリユニットに格納する必要性から派生したタイプです。つまり、ユニオンに一度に格納できる変数は1つだけです。この変数は、新しいメンバーがユニオン変数に格納されると無効になります。!!使用法は構造体と同じですが、主に構造体内で使用されます。
注意:
(1)構造体では、各メンバーが独自のメモリ空間を占有し、同時に存在します。構造体変数の全長は、すべてのメンバーの長さの合計に等しくなります。ユニオンでは、すべてのメンバーが同時にメモリ領域を占有することはできず、同時に存在することもできません。Union変数の長さは、最も長いメンバーの長さと同じです。
(2)ユニオンの異なるメンバーに値を割り当てると他のメンバーが上書きされ、元のメンバーの値は存在せず、構造体の異なるメンバーの割り当ては互いに影響しません
-
static、const、およびvolatileキーワードの機能は何ですか?
回答:静的:役割を制限し、ライフサイクルを延長します。const:変数が変更されないようにします。揮発性:コンパイラーが最適化しすぎないようにするには、毎回メモリーから値をフェッチするようコンパイラーに指示します。Volatileは主に、割り込み関数サブルーチンによってアクセスされる非自動変数、複数のスレッドによって共有されるグローバル変数、および並列デバイスのレジスターに使用されます。
-
変数の宣言と変数の定義の違い
回答:
-
代入と初期値代入の違いは何ですか?
-
ローカル変数とグローバル変数の名前を変更できますか
-
定義されている外部変数を参照する方法
-
グローバル変数とローカル変数のストレージの違いは何ですか?
-
#defineと比較したconstの利点は何ですか?
-
配列とポインターの違いは何ですか?
-
関数パラメーターとして使用される配列とポインターが交換可能なのはなぜですか?
-
仮パラメータと実際のパラメータの違いは何ですか?
-
ポインタ、配列、アドレスの関係は何ですか?
-
voidポインターはnullポインターですか?彼の役割は何ですか?
-
記憶に密接に関連する重要な概念は何ですか?(ワイルドポインター、スタック(スタック)、ヒープ(ヒープ)、静的領域)
-
#include <>と#include””の違いは何ですか?
-
x = x + 1、x + = 1、x ++どちらがより効率的ですか?
-
符号なし変数に値を割り当てる場合、データ型はどのように変換する必要がありますか?
-
CPUはどのようにプログラムを実行しますか?
回答:0〜4gのメモリ空間を開き、プロセスを開いて、コードをレジスタにロードします...
2. Linuxの基本
-
Linuxでのキャラクターデバイス、ブロックデバイス、パイプなどの総称は何ですか?
回答:固定サイズのデータスライスにランダムに(順番にではなく)アクセスできるシステム内のデバイスは、ブロックデバイスと呼ばれます。
キャラクターデバイスとブロックデバイスの主な違いは、読み取り/書き込み要求がキャラクターデバイスに発行されると、実際のハードウェアI / Oは通常すぐに発生しますが、ブロックデバイスは発生しません。システムメモリのブロックをバッファーとして使用します。プロセスがデバイスにユーザーの要件を満たすように要求すると、要求されたデータが返されます。それができない場合は、要求関数を呼び出して実際のI / O操作を実行します。したがって、ブロックデバイスは主に、ディスクなどの低速デバイス用に設計されており、過度の消費を回避しています。待機するCPU時間の増加
-
ファイルの種類を表示するにはいくつかの方法があります
::Ls-l、ls-ld、ファイル、stat
-
Linuxで一般的に使用されるインストールツールは何ですか?
アンサー:apt-get install
-
シェルコマンド、シェル、シェルスクリプトを個別に解釈する
-
printfとscanfが同じファイルを操作するかどうか
-
Linuxでは一般的にどのファイルシステムタイプが使用されますか?ファイルシステムのタイプを確認するにはどうすればよいですか?
-
Windowsにファイルシステムはありますか?ファイルシステムは何をしますか?
-
ヘッダーファイルとライブラリファイルは通常どのパスにありますか?
-
システムは同じ名前のファイルをどのように区別するか
-
システムはどのようにして異なるプロセスを区別しますか。
-
ファイルに含まれるコマンドを確認する
回答:検索、ls
-
ファイルを変更する権限など
回答:chmod 777 xxx
-
シンボリックリンクとは何ですか?
3.データ構造
-
データ構造の主な研究は何ですか?
回答:データ構造は、コンピューターがデータを格納および編成する方法です。データ構造とは、互いに1つ以上の特定の関係を持つデータ要素のコレクションを指します。通常の状況では、慎重に選択されたデータ構造により、運用効率やストレージ効率が向上します。データ構造は、多くの場合、効率的な検索アルゴリズムとインデックス作成技術に関連しています。
-
配列とリンクリストの違い(3つの側面の分析:論理構造、メモリストレージ、アクセスモード)
-
クイックソートアルゴリズム
-
ハッシュ検索のアルゴリズム
-
単一リンクリストにリングがあるかどうかを判別
-
ブラケット文字列が正しく一致するかどうかを判断します。複数のブラケットがある場合、どうすればよいですか?(([]))が正しい場合、[[(()は間違っています
4. IOプロセス
- 標準IOとファイルIOの違いは何ですか?
- ストリームポインタについて簡単に説明してください。
- システムコールについて簡単に説明してください。
- 静的ライブラリと動的ライブラリの違いについて簡単に説明してください。
- プログラムを直接、バックグラウンドで実行する方法は?
- プロセスの状態
- ゾンビプロセスとは何ですか?
- 子プロセスの作成におけるコピーオンライト技術について簡単に説明してください。
- マルチスレッドとより多くのプロセスの利点?
- スレッドプールの使用?
- スレッドプールの一部?
- スレッドの同期と相互排除メカニズム?
- mutexロックの実現原理について簡単に説明してください。
- デッドロックのシナリオについて簡単に説明してください。
- セマフォの原理について簡単に説明してください。
- プロセスの通信メカニズムについて簡単に説明してください。
- パイプラインの通信原理は?
- ユーザープロセスはシグナルにどのように応答しますか?
- 共有メモリ通信の原理は?
V.ネットワークプログラミング
- ISO 7層ネットワーク通信構造およびTCP / IP 4層ネットワーク通信構造
- TCP通信の利点と欠点
- UDP通信の長所と短所
- プールと選択の違い
- IOモデルとは
- TCPコンカレントサーバーの実装方法
- ネットワークタイムアウト検出の性質と実装
- tcpネットワークプログラミングプロセス
- udpネットワークプログラミングプロセス
- UDPローカルコミュニケーションで注意すべき点
- ファイル記述子のフラグビットを変更する方法
- 追加、削除、変更を含む、sqliteデータベースの基本的な使用法
- UDPベースのチャットルームで大量のデータ送信を実現する方法
- オンライン辞書で単語をクエリする方法
- TCPとUDPの違い
- OSI 7層ネットワークモード、各層の主な機能、メインプロトコル
- OSIの4層および5層ネットワークモデル
- TCPの3ウェイハンドシェイクと4回のハンドウェーブは別々に機能します
- 並行サーバーの実装方法、並行サーバーの実装方法、および類似点と相違点
Six。C ++
-
新規、削除、malloc、解放関係
-
削除と削除[]の違い
-
C ++のプロパティは何ですか(オブジェクト指向の特性)
-
サブクラスが破棄されるときに親クラスのデストラクタを呼び出す必要がありますか?
-
ポリモーフィズム、仮想関数、純粋仮想関数
-
次の関数の戻り値を検索します(Microsoft)
-
「見積もり」とは?「見積もり」を確認して使用する際に注意すべき問題は何ですか?
-
関数パラメーターとして「参照」を使用する特徴は何ですか?
-
「頻繁に引用される」を使用する必要があるのはいつですか?
-
関数の戻り値の型として「参照」を使用する形式、利点、およびルールは?
-
構造と労働組合の違いは何ですか?
-
プログラムの結果を書いてみます。
int a=4; int &f(int x){ a=a+x; return a; } int main(void) { int t=5; cout<<f(t)<<endl; a = 9f(t)=20; a = 20cout<<f(t)<<endl; t = 5,a = 20 a = 25t=f(t); a = 30 t = 30cout<<f(t)<<endl; } //t = 60
-
オーバーロードとオーバーライドの違いは何ですか(一部の本は「カバー」とも呼ばれます)?
-
どのような状況で、初期化リストのみを使用でき、割り当ては使用できませんか?
-
C ++の型は安全ですか?
-
メイン関数が実行される前にどのコードが実行されますか?
-
メモリの割り当て方法とその違いについて教えてください。
-
BOOL、int、float、ポインタ型変数aと "zero"の比較ステートメントをそれぞれ書き出します。
-
#defineと比較したconstの利点は何ですか?
-
配列とポインタの違いについて簡単に説明してください。
-
int(* s [10])(int)はどういう意味ですか?
-
スタックメモリとリテラル定数領域
-
プログラムを指定されたメモリアドレスにジャンプします
-
int id [sizeof(unsigned long)];これは正しいですか?どうして?
-
参照とポインタの違いは何ですか?
-
#defineと比較して、constの利点は何ですか?
-
メモリ割り当て方法はいくつありますか?
-
基本クラスのデストラクタは仮想関数ではありませんが、どのような問題が発生しますか?
-
グローバル変数とローカル変数の違いは何ですか?それはどのように達成されますか?オペレーティングシステムとコンパイラはどのようにして知るのですか?
7. ARMアーキテクチャプログラミング
- ARMプロセッサの特性を簡単に説明します。少なくとも5つ以上の特性を説明します。
- ARMコアにはいくつの動作モードがありますか?これらの動作モードの英語の略語を書き留めてください。いくつかの異常なモードといくつかの特権モードがあります。cortex_aシリーズには、いくつかの特権モードといくつかの動作モードがあります。
- ARMコアにはいくつのレジスタがありますか?簡単に説明してください
- ARM汎用レジスタには、特殊な機能と機能を持つレジスタが3つありますので、その名称と機能をご記入ください。
- CPSRレジスタの該当するビットの状況と機能を説明してください。
- 即時データとは何ですか?即時データの性質とは
- BL命令がジャンプしたときにLRレジスタに保存される内容は何ですか?その理由を簡単に説明してください
- 処理サイトとは何ですか、サイトを保存する方法を教えてください。
- ATPCSはデフォルトでどのスタックを使用しますか?
- フルスタックと空のスタックとは何ですか?また、増減とは何ですか?
- 完全なARMソフトウェア割り込み命令を記述し、その機能を簡単に説明してください。
- ARMシステムにおける例外ベクタテーブルの概念について教えてください。
- ARMプログラムによって生成されたbinファイルイメージに何が含まれているかを書き留めてください。
- ARMプロセッサでの割り込み処理と割り込み例外処理の違いを示す例を挙げてください。
- 異常な割り込み処理が発生した場合の初期化ステップの完了方法と、具体的な初期化ステップについて簡単に説明してください。
- ubootの主な機能
- ubootはどのようにカーネルをブートしますか?
- ubootの起動プロセスの重要性は何ですか
- bootcmdとbootargsの2つのuboot環境変数の役割
- Linuxカーネルの起動プロセス
- uImage、zImage、vmlinuxの違い
- Kconfig、.config、Makefileの関係
8.システムの移行
- Linuxカーネルの起動プロセス
- ブートローダーとは何ですか?組み込みシステムでのブートローダーの役割は何ですか?
- アセンブリ言語がハードウェアプラットフォームに依存しているのに、C言語はハードウェアプラットフォームに依存しないのはなぜですか?
- クロスコンパイルとは何ですか?
- Linuxプラットフォームでの実行可能ファイルの形式は何ですか?
- 分解とは?
- NFSサービスの概念と機能について簡単に説明してください。
- Linuxカーネルを備えた開発ボードの起動プロセスについて簡単に説明してください。
- ubootの主な機能は何ですか?
- ubootはどのように環境変数を設定しますか?
- ubootにおけるbootcmd環境変数の役割について簡単に説明してください。
- ubootにおけるbootargs環境変数の役割について簡単に説明してください。
- プラットフォーム関連のコードとは何か、プラットフォームに依存しないコードとは何ですか?
- linux / ubootがさまざまなハードウェアプラットフォームをサポートしていることを理解するにはどうすればよいですか?
- 特定の開発ボードプラットフォームに合わせてubootを構成するにはどうすればよいですか?
- ubootをコンパイルしてバイナリファイルを生成する方法
- ubootの起動プロセスについて簡単に説明してください。
- オペレーティングシステムの機能は何ですか?
- Linuxのソースコードを特定のプロセッサに合わせて構成する方法
- make menuconfigインターフェースでは、一部のドライバーを「Y」、「N」、および「M」の3つの状態に選択できますが、これらの3つの状態は何を意味していますか?
- 「M」オプションとして選択されたドライバーモジュールをコンパイルする方法
- デバイスツリーの役割について簡単に説明してください。
- デバイスツリーファイルを作成する主な根拠は何ですか?
- カーネルソースコードの既存のドライバーをカーネルにコンパイルする方法を簡単に説明してください。
- 自分で作成したドライバーをカーネルにコンパイルする方法を簡単に説明してください。
- カーネルの起動プロセスにおいて、コンソールが初期化されている場合、カーネルのデバッグには通常どのような方法を使用しますか?
- 起動中にLinuxカーネルがシステムクラッシュレポートOopsに遭遇するとどうなりますか?
- Linuxカーネルは、起動時に特定の問題が発生すると、システムクラッシュレポートを出力します。レポートに出力される主な内容は何ですか?
- ファイルシステムとは何ですか?ルートファイルシステムとは何ですか?
- 開発ボードに静的ライブラリをインストールする必要がないのはなぜですか?
9.開発を推進する
-
モジュールとは?
-
いくつかのドライブタイプがあります
-
キャラクターデバイスドライバーフレームワークのプログラミングプロセス?
-
同時実行とは何ですか?ドライバーの競合状態の理由は何ですか?
-
競合状態を解決する方法は何ですか?それぞれの特徴は何ですか?
-
ドライバーにはいくつのIOモデルがありますか?
-
Linuxデバイスモデルの設計の主な機能は?
-
キャラクターデバイスドライバーフレームワークはLinuxデバイスモデルと矛盾しますか?
-
プラットフォームアーキテクチャのパーツは何ですか?彼らは何に一致します
-
デバイスツリーとプラットフォームアーキテクチャの間に矛盾はありますか?
-
割り込みが上半分と下半分に分かれているのはなぜですか?上半分と下半分のメカニズムは何ですか?
-
ワークキューとタスクレットの違いは?
-
カーネルのメモリ割り当て関数とは何ですか?それぞれの特徴は何ですか?
-
カーネルのデバッグ
-
キャラクターデバイスドライバーフレームワーク
-
キャラクターデバイスとブロックデバイスとネットワークデバイスの違い
-
同時実行性と競合状態の概念、競合状態が発生する状況、それらを解決する方法、違いと使用シナリオ。
回答:同時実行性:
-
スピンロックとセマフォの違い
回答:リソースへのアクセス中にプロセスがスピンロックを取得すると、別のプロセスもそのリソースにアクセスする必要があり、リソースにアクセスしてCPUリソースを継続的に消費できるかどうかを確認するために常にスピンします。リソースへのアクセス時にプロセスがセマフォを取得すると、別のプロセスもリソースへのアクセスを要求します。このとき、そのプロセスは待機します。最初のプロセスがアクセスを完了すると、2番目のプロセスに通知して処理を続行させます。アクセス。
-
割り込みコンテキストとプロセスコンテキストの理解について話す
-
下半分の主な中断は何ですか
-
Platfprmプラットフォームバスドライバーモデル
-
IICサブシステムドライバーフレームワーク
-
入力サブシステムドライバーフレームワーク
-
例:マスターがスレーブの7ビットアドレスを知らない場合、どのようにしてスレーブを見つけることができますか?
回答:マスターがスレーブのアドレスを知らない場合、マスターはすべてのスレーブアドレスをトラバースします。スレーブが応答すると、このスレーブは探しているスレーブです。
10. IOTウェアハウジング
- プロジェクトで何を担当していますか?
- プロジェクト中にチームはどのような困難に直面しましたか?どのようにそれを解決しましたか?また、発生した最も困難な問題をどのように解決しましたか?
- このプロジェクトに最適化できると思いますか
- A53主なプログラム開発プロセス
- クライアントとサーバーの通信方法
- ubootの移植時に自己起動パラメーターを設定する方法
- プロジェクトの環境情報がクライアントにリアルタイムでどのように表示されるか
- プロジェクトのスレッド間の同期と相互排除を実現するにはどうすればよいですか?
- サーバーがM0と通信する方法
- M0で送信されるデータの形式は何ですか?
- データ受信スレッドがデータを読み取る方法
- ビデオストリーミングサーバーの動作原理を簡単に説明してください
- クライアントがサーバー上のデータにアクセスできるのはなぜですか
- 組み込み開発環境を構築するために実行する必要がある手順
- プロジェクトでセグメンテーション違反が発生した場合はどうすればよいですか?
- なぜスレッドを使用するのですか?プロセスと比較して利点は何ですか?
- 電源を入れた後、システムが自動的に実行を開始する方法は?
- カーネルをコンパイルするときのzImageとuImageの違いは何ですか?
- システム内のメッセージキューの役割は何ですか?
- メッセージキューと共有メモリはどこでスペースを開放しますか?
- サーバー側のデータ分析の速度がデータ受信の速度に追いつけない場合、どのような問題が発生し、何をすべきですか?
- sqlite_get_table()を呼び出してデータをクエリすると、resultに返される結果は何ですか?
- ZigBeeのネットワーク原理を簡単に説明してください
- zstackプロトコルスタックについての知識について話す
- 2つのzigbeeモジュールのデータ透過的な送信を実現するために何をする必要がありますか?
- Boaサーバーの役割
- Boaサーバーが使用するデフォルトのポート番号は何ですか?boa.confファイルに記述されている重要な構成は何ですか
11. Baidu音声認識
-
優れたLinuxシステムである開発ボードを持っている場合、Baidu AI音声認識を呼び出すインターフェース(libcurl、openssl、alsa、および移植方法の役割)を実現するにはどうすればよいですか?
-
開発ボードが外部ネットワークとBaiduにpingできることを理解する方法
-
実装プロセスでどのような問題が発生しましたか?どうやってそうなった?それを解決するには?
-
現在のシステムバージョンを確認する方法
あまり包括的ではありません、ご容赦ください...