はじめに
こんにちは。
RUNTEQ59期生のいとけんです
私は25年の4月にRUNTEQを卒業し、同年8月、受託開発会社に入社して人事採用業務を行っています
今回は高還元SES、技術を特化したSES、プライム案件を多く持つSESなどで実際にあった技術面接の質問を抜粋しました
私個人の意見や体験談なので、すべて正しいとは限りませんが、為になる機会にもなると思いますので参考になれたら幸いです
個人的な意見や見解なども含まれていますので、その点を注意して参考になれたらと思います
また大規模のなプロジェクトよりもコアな部分に特化したい場合、web開発に特化したい場合、参考になれないケースもございますのでご了承ください
そもそもSESとは
すでに認識済みの方はこのコーナーをパスしてください
まず技術質問の設問の紹介の前に初めての方にもわかるように説明しますが、「SES」は「システム・エンジニアリング・サービス」の略です。簡単に言うと、IT企業がエンジニアを他の会社(例えば大手SIer,自治体,自社事業会社,受託開発会社など)に派遣して、その会社の仕事を手伝うしくみです
基本的にSESの社員は客先に常駐して、他の会社からの仕事内容の指示を聞き、業務を行います
そのため、自社で業務を行っているのはCEOなどの経営上層部と営業部隊のみです
※ただしごく一部のSESは社員同士の連携を促進するため、自社で持ち帰って業務するケースもあります
働く場所は他の会社ですが、SES企業(自分の所属会社)から給料をもらいます。
給料の流れとしてはこんな感じですが、多重請負構造になりがちなので、下請けになるほど給料が少なくります
また業務内容によって、クライアント企業がSES企業に依頼する額も異なることを留意しましょう
一例は下記になります
- クライアント企業がSES企業に「月50万円」でエンジニアを依頼
- SES企業がそのエンジニアに「月20万円」の給料を支払う
- 残りの30万円はSES企業の利益(会社の運営費など)
派遣会社と何が違うのかというと、法律上としくみが異なるところです
わかりやすく図表にまとめると下記になります
比較項目 | SES(準委任契約) | 派遣(労働者派遣契約) |
---|---|---|
雇用関係 | SES企業とエンジニアにある | 派遣会社とエンジニアにある |
指揮命令権 | SES企業が持つ(クライアントは持たない) | クライアント企業が持つ |
契約の種類 | 準委任契約(業務の遂行を依頼) | 労働者派遣契約(労働力の提供) |
仕事内容の指示 | SES企業が業務内容を管理・指示 | クライアント企業が直接指示 |
法律の対象 | 民法(業務委託) | 労働者派遣法 |
まとめると、
- SES:エンジニアは「業務を任される」立場。クライアント企業の社員ではございません
-
派遣:エンジニアは「指示されて働く」立場。クライアント企業の指示に従います
SESは「業務委託」なので、働き方が柔軟で、フリーランスに近いスタイルも可能ですが、派遣は「労働者」として扱われるので、法律で守られる部分が多いとされています(有給、残業規定など)
高還元SESと従来のSESと何が違うのか
すでに認識済みの方はこのコーナーをパスしてください
大きな違いは給料の違いです
SES業界で「還元」は、顧客からもらったお金のうち、どれだけをエンジニアに給料として渡すかを指しますが、高還元SESは中抜き(会社が多くの利益を取る)が少なく、エンジニアにたくさんの給料を渡します
例えば、先ほどの例だと
(一般的なSESの場合)
- クライアント企業がSES企業に「月50万円」でエンジニアを依頼
- SES企業がそのエンジニアに「月20万円」の給料を支払う
- 残りの30万円はSES企業の利益(会社の運営費など)
これが高還元の場合、同じ案件でも
(高還元SESの場合)
- クライアント企業がSES企業に「月50万円」でエンジニアを依頼
- SES企業がそのエンジニアに「月40万円」の給料を支払う
- 残りの10万円はSES企業の利益(会社の運営費など)
と還元率が80%〜90%以上になることもあり、エンジニアのモチベーションが高まる効果にもつながります
このことから、若い人やフリーランス志望の人にも魅力的なものになってきています
また高還元の場合は、技術の追求と社員同士のかかわりを促進するべく、勉強会やLT会の実施、受託開発事業の参加、自社開発事業などの多角化を進めるケースが多いです
そのことから、SESで(頑張り次第もしくは努力次第になりますが)他社のプロジェクトで貢献したのち、自社に戻って自社事業または受託開発事業の参画、マネジメント経験からの人事総務への異動へと転身する人も少なくないです
レベル高めのSESではJavaを用いるので、それに関した技術質問が多い
基本的に高還元SESの多くは、大手SIerと直接(もしくは2次請けという形で)関わるケースが多く、案件のプロジェクトも大規模なものがほとんどです
たとえば、自動車産業の自動運転における開発案件、自社事業のシステム開発事業など多くの人がものや、地方自治体のwebサービス事業の開発案件など行政とのかかわりが強いものもあります
このような大きめのプロジェクトはJavaを使う事例が多いことから、高還元SESや技術に特化したSESなどはJavaが推奨されやすいため、それに関した技術質問が多く出されます
実際に私が面接で受けた際も1次面接で技術質問が出てくるSESの多くは、技術に興味があるかを判断するうえでよく使われていました
今回は特によく出される代表的なJava関連の質問をいくつか紹介いたします
質問事例
1:文字列型とプリミティブ型について、あなたの知っている範囲でお答えください
これは変数の型がどのくらい知ってるか、業務でどのようなものを使っていたのかを把握するための質問です
対策としては下記Qiitaを読んで頭の隅に残すか
下記のYouTube動画を繰り返し視聴するかのいずれかになります
プリミティブ型のざっくりした表は下記のとおりです
データ型 | 表現できる値や範囲 | ビット(bit) | 具体例および説明 |
---|---|---|---|
boolean | true, false | 1 | 真偽値(例えば0以上ならtrue、それ以外はfalse) |
byte | -128 ~ 127 の整数 | 8 | |
char | \u0000 ~ \uFFFF のUnicode文字列 | 16 | 一文字、ダブルクォーテーションではなく、シングルコーテーションで記述する |
short | -32768 ~ 32767 の整数 | 16 | |
int | 整数 | 32 | 1,2,3,4などの小数点値ではない数値 |
float | 実数(単精度不動小数点数) | 32 | 小数点値(2f, 100F) |
long | 整数 | 64 | 10l, 5L |
double | 実数(倍精度不動小数点数) | 64 | 小数点値 |
下に行くほどビット数が大きくなることで表現が広くなり、intの下にdoubleの変数を記述すると自動で記述はできます
逆に、doubleからintに書き戻す際はビット数が小さいのでデータの量があふれることからコンパイルエラーになりますので、(int)のようにキャストする必要があります
テキストもしくは資料によっては、プリミティブ型ではなく基本データ型と紹介されることもあります(両方とも意味は同じです)
もしくは参考書を購入して、NoteやQiitaにまとめておくというのもベストかと思います
またここで大事なのは、EclipseやVSCodeなどのツールでコードを記載して実際にどのような操作をするのかを理解することが大切です
これを行うことで、ノートの板書や暗記よりも文字列型とプリニティブ型の理解がさらに強くなります
2:オブジェクト指向について説明してください
Ruby,PHPでもオブジェクト指向は使われますが、Javaは大規模なプロジェクトにつかれるケースが多いため特に重要視されています
これも下記のYouTube動画を繰り返し視聴すると内容がわかりやすくなります
文章で説明しても伝わりにくいので、オブジェクト指向は実際にアウトプットしてみると理解が強まると考えます
オブジェクトは英語の「物体」から来ています
よく例えで、車で例えるケースがあります(部品などのパーツは変数、車の操作はメソッド)が、
物体を属性(プログラミング的に説明すると変数)と操作(プログラミング的に説明するとメソッド)にクラスを分けて、コード記述する志向のことです
Javaの場合、実行用のmainメソッドの中に記述することで操作をすることが可能ですが、要件定義の修正、機能の追加、複雑な工程管理などが発生すると、mainメソッド内でまとめるには限界が発生します
そこで、別途クラスを追加して、設計図クラスとして設定することで、変数の記述、修正する箇所をあらかじめ置くことにより複雑な機能追加、要件定義でも効率よくスムーズに行うことができます
また、オブジェクト指向で進めると実行用のmainメソッドで一気に記載するよりも使用するメモリ数の無駄を省くこともできるので、実行操作が滑らかになることもできます
3:For文とwhile文の違いについて説明してください
こちらも下記の動画を参考にすることをおすすめします
For文とwhile文は同じ繰り返し処理ですが、若干違うところがあります
繰り返し処理
ある条件が満たされている間、同じ処理を何度も繰り返すためのしくみです
車でいうと、ガソリンが0になるまで走行し続けるということになります
for文は繰り返しの回数が決まっていたり、配列の各要素に対して何かしたいときの繰り返し処理で使われます
配列の各要素に対して何かしたいときの繰り返し処理で使われるので、実際の業務ではwhileよりも汎用性が高いです
for (初期化式; 条件式; 変化式) {
// 条件式がtrueのときに繰り返す処理
}
while文はある条件を満たされる間繰り返す文なので、繰り返しの回数が決まっていません
記述はif文と似ています
while(条件式){
//処理
}
このほかにも拡張for文、do while文などもありますが、面接ではそこまで深堀りすることはないので、それぞれの違いを把握したうえで回答すると良いかもしれません
おわりに
今回は高還元SES、技術を特化したSES、プライム案件を多く持つSESなどで実際にあった技術面接の質問を紹介してきました
ただし、企業によっては求められるスキルや人材が異なるので、そこに関しては充分に調べたうえで面接対策するのをおすすめします
例えば、志向や感情、体力やメンタルを重視する会社とかでは技術面接よりも心情を探る質問が多いです
自分はどの企業に向いているのかをしっかり判断したうえで、この記事を参考に技術面接対策できたら幸いです
疑問点、修正点などございましたら、お気軽にコメントのほどよろしくお願いいたします