技術試験で出題された問題

#はじめに
未経験から転職活動をしているなかで、本日初めて技術試験を受けました。基本、用語についての正誤問題であったのですが、これがかなり難しかったので、覚えている範囲で基本レベル〜応用レベルの用語をでこちらにまとめます。

#実際に出た問題の用語

###ロードバランサー
ロードバランサ（負荷分散装置）とは、クライアントPCからWebサーバなどへのアクセス要求を制御して同じような機能を持つ複数のサーバに、アクセスを分散して転送する装置のことです。ロードバランサの負荷分散（ロードバランシグ）により、サーバからの応答速度の遅延を防ぎ、サーバに障害が発生してもシステムダウンを回避できます。また、同じクライアントPCからの通信を常に同じサーバに転送できます。
**要は、分散させてるやつ！！**

![スクリーンショット 2021-05-19 15.18.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1128031/0020e5b9-4e27-4ee3-8b39-6b6f08e30797.png)

参考URL:[こちら](https://www.infraexpert.com/study/loadbalancer1.html)


###DNSラウンドロビン

DNSラウンドロビンとは、1つのドメイン名に複数のIPアドレスを割り当てて、クライアントPCなどからの問い合わせごとに順番に応答していく負荷分散技術です。このDNSラウンドロビンはECサイトなどの外部公開されている Web サーバの負荷分散に使用することが一般的であり、このDNSラウンドロビンの設定は外部公開しているDNSサーバ、あるいは、契約しているISP回線業者のDNSサーバで行うのが一般的です。
**要は、ロードバランサーのようにDNSサーバが分散してくれるってことみたい!**


![スクリーンショット 2021-05-19 15.21.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1128031/ae95f437-940a-4d7d-6128-f955519bae31.png)




参考URL:[こちら](https://www.infraexpert.com/study/loadbalancer1.html!)

###エースター（A*）アルゴリズム
A*アルゴリズムとは、探索アルゴリズムの一種です。経路をノードで表現して、スタートノード（開始地点）からゴールノード（目標地点）までの経路を計算し、この経路が最短であることを保証するアルゴリズムとなります。そしてスタートからゴールまでの間に障害物があってもちゃんと迂回してくれます。
**たしか、理系大学生ならやったことがあるダイクストラ法のやり方をベースにしてより効率的にしたもの**

参考URL:[こちら](https://qiita.com/2dgames_jp/items/f29e915357c1decbc4b7)


###ARP
ARP（Address Resolution Protocol）は、IPアドレスからEthernetのMACアドレスの情報を得られるプロトコルです。

参考URL：[こちら](https://www.infraexpert.com/study/tcpip2.html#:~:text=ARP%EF%BC%88Address%20Resolution%20Protocol%EF%BC%89%E3%81%AF,%E3%82%92%E5%BE%97%E3%82%89%E3%82%8C%E3%82%8B%20%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E3%81%A7%E3%81%99%E3%80%82)

###UDP
UDPは、インターネットで標準的に使われているプロトコルの一種で、 「User Datagram Protocol」の略です。 インターネット・プロトコル(IP)を使ったネットワークにおいて、 アプリケーション同士が最小限の仕組みでデータを送受信できるように考案された、 シンプルなプロトコルです。

参考URL:[こちら](https://www.nic.ad.jp/ja/basics/terms/udp.html#:~:text=UDP%E3%81%AF%E3%80%81%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%A7%E6%A8%99%E6%BA%96,%E3%81%9F%E3%80%81%20%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E3%81%A7%E3%81%99%E3%80%82)
###UDPホールパンチング
UDPホールパンチングによる NAT traversal とは、NAT を使ったプライベートネットワーク内にあるホスト同士がインターネット経由で双方向のUDPコネクションを確立する手法である。**UDPと名前似ているけど、結構違うことを指すので注意！！**

参考URL：[こちら](https://ja.wikipedia.org/wiki/UDP%E3%83%9B%E3%83%BC%E3%83%AB%E3%83%91%E3%83%B3%E3%83%81%E3%83%B3%E3%82%B0#:~:text=UDP%E3%83%9B%E3%83%BC%E3%83%AB%E3%83%91%E3%83%B3%E3%83%81%E3%83%B3%E3%82%B0%EF%BC%88%E8%8B%B1%3A%20UDP,traversal%20%E6%8A%80%E8%A1%93%E3%81%AE1%E3%81%A4%E3%80%82)


###ダーティーリード、ファジーリード、ファントムリード
複数トランザクション同時実行時に発生しうる問題のことで、詳しくは参考URLにて記載

参考URL:[こちら](https://sites.google.com/site/kojimemos/home/mysql/toranzakushon/toranzakushon-fen-lireberu)


###アドボック多相、パラメータ多相

プログラミング言語の型システムの性質を表すものの種類

**アドホック多相（Ad hoc polymorphism）**
ある関数が、異なる型の引数に対してそれぞれ異なる実装を持つ場合。

**パラメータ多相（Parametric polymorphism）**
コードが特定の型を指定せずに書かれることで、さまざまな型に対して透過的に使用できる場合。オブジェクト指向言語ではジェネリクスやジェネリックプログラミングとしても知られる。

参考URL:[こちら](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0#%E3%82%A2%E3%83%89%E3%83%9B%E3%83%83%E3%82%AF%E5%A4%9A%E7%9B%B8)

###静的言語、動的言語について

動的型付け
言語変数などのデータ型の宣言がいらないプログラミング言語。

Python
Ruby
JavaScript
PHP
など

静的型付け言語
変数などのデータ型の宣言が必要なプログラミング言語
**C言語とかだと、いちいちintとか書いてたやつ！！！**

C/C++
C#
Java
Go
Scala
Swift
など

参考URL：[こちら](https://qiita.com/wann/items/16920b070dc0483f152a)


###プログラム意味論
プログラム意味論（英: program semantics）とは、計算機科学（特に理論計算機科学と分類されることもある）の一分野で、プログラミング言語の意味と計算モデルに関する分野である。

**表示的意味論**
 対象とする言語の語句それぞれを「表示」に変換する。表示的意味論はコンパイルと対応すると考えることもできるが、意味論の議論ではその目的（形式化したい、という場合が多い）から、数学的な形式化された「言語」であることが多い。例えば、関数型言語の表示的意味論では、領域理論の「言語」に変換する。
**操作的意味論**
 何らかの変換を施すのではなく、その言語の実行によって直接的に意味を説明する。操作的意味論はインタプリタと対応すると考えることもできるが、表示的意味論の場合と同様に、この場合の「インタプリタの実装」は何らかのコンピュータ上での実装ではなく、数学的な形式化された「インタプリタ」であることが多い。操作的意味論を抽象機械（例えばSECDマシン）で定義することも可能で、プログラムの語句の並びが抽象マシンの上で引き起こす状態変化を説明することによって各語句の意味を説明する。あるいは、純粋なラムダ計算のように、操作的意味論を対象言語の語句の並びの統語的変形過程と定義するようなものもある。
**公理的意味論**
 語句の並びに「論理学的公理」を適用することによって意味を明らかにする。公理的意味論では語句の意味とそれを表す論理式を区別しない。この場合、プログラムの意味は論理学で証明可能なものと等価である。公理的意味論の典型的な例としてホーア論理がある。

参考URL：[こちら](https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E6%84%8F%E5%91%B3%E8%AB%96)

###ActorModel
アクターモデルとは、1973年、カール・ヒューイット、Peter Bishop、Richard Steiger が発表した並行計算の数学的モデルの一種。

参考URL:[こちら](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%87%E3%83%AB)

###Compositeパターン
Composite とは、英語で「複合物」を意味する言葉です。 Composite パターンは、「容器と中身を同一視する」ことで、再帰的な構造の取り扱いを容易にするものです。

参考URL：[こちら](https://www.techscore.com/tech/DesignPattern/Composite.html/)

###ガーベージコレクション
ガベージコレクション[注釈 1]（英: garbage collection; GC）とは、コンピュータプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。廃品回収[1]やゴミ集め[2][3]などの訳もある。

参考URL：こちら(https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3#:~:text=%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%EF%BC%88%E8%8B%B1%3A%20garbage%20collection,%E3%83%9E%E3%83%83%E3%82%AB%E3%83%BC%E3%82%B7%E3%83%BC%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E7%99%BA%E6%98%8E%E3%81%95%E3%82%8C%E3%81%9F%E3%80%82)

###非同期I/OとノンブロッキングI/O
I/O処理が完了したタイミングで通知するI/Oモデルを非同期I/Oという。
ノンブロッキングI/OではI/O対象のファイルディスクリプタが準備完了していない場合ユーザへ
即座にエラーが返る(EAGAIN)


参考URL:[こちら](https://qiita.com/ryuichi1208/items/82dc8f343c966b86b9b2)


#おわりに
正直、全然わからなくて、最後の方は新しい知識に出会った記念ということでわからない単語メモりまくってました笑
今回は色々なところからの情報をかき集めただけではあるものの、こういう意味だったんだ〜とか、あれ、なんか知ってる！と思えるものもあったので、最復習してできるかぎり知識として暗記しちゃおうかなと思います