ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

3
シニア開発者のためのそれらのテクニック詳細インタビュー質問のポイントは何ですか?[閉まっている]
ここで何が質問されているのかを理解することは困難です。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前休業。 シニアプラスのような、より高いレベルのプログラマーの称号を得るために、内部昇進の面接を受けました。そして、私はさまざまなテクノロジーを使用している約7人の人々からインタビューを受けました、そして私(.Net)と同じテクノロジーを使用している人々は、JITとは何か、GCのしくみなど、Googleを介して実際に簡単に見つけられる非常にテクニックの詳細な質問をする傾向があります、リストと配列の違い、抽象クラスとインターフェイス、デリゲートとイベント、アップロードファイルを処理するときのクラス名なども含まれます。プロジェクトでのデザインアイデアの1つについて質問されたのは1つだけです。簡単な議論。しかし、他のほとんどの私のデザインの選択では、彼らは単に興味がないようです。 まだ結果は得られていませんが、今週の終わり頃になるでしょうが、ここに私の懸念があります: 個人的には、シニアプログラマーとしてプレイするとき、主に問題を解決することを考えています。問題を発生させるための特定の方法があることを知る必要がありますが、詳細なことをすべて覚えているわけではないので、詳細なリファレンスがあります。 MSDNのようなドキュメント。 ジュニアレベルから中級レベルのようなこのエリアの周りであまり経験がなかったとわかっていれば私は気分が良いですが、より高いレベルの男にインタビューする傾向があるとき、あなたはこの男の論理的思考がどのように優れているかを見ることにもっと焦点を当てるべきではありませんか?彼/彼女は問題を解決するのですか?細かい点の細かい技術的なことをすべて知っていれば、みなさんはシニア+だと思いますか。そして、それらのインタビューの質問集をチェックすると、私はそれらの種類の質問がもっとあることがわかりました。 私が5日間を費やしてそれらのインタビューの質問リストの本を通り抜けると、それらの人にすごい気分にさせることが簡単にできますが、それは本当に何を意味するのでしょうか?この種のインタビューは、困難な問題を解決する方法がわからなくても、物事がより高い給与を得ることを覚えているのを容易にさせることができます。 では、なぜこれが世界で起こっているのか、それが問題解決スキルを引き起こし、デザインスキルを測定するのが難しいのでしょうか?私はこの会社に何年も勤務していて、他の会社とのインタビューはほとんどなかったので、どの会社も同じことをしているのでしょうか? それとも、これは実際に私自身の問題なのか、MSDNのすべてを頭の中で覚えて、インターネットなしでも作業できるようにするために一生懸命努力する必要があるのでしょうか。 編集 仕事のタスクに関するフランクの懸念に関する私の状況をよりよく説明するため。申し訳ありませんが、これらの背景を明らかにできなかったのは残念です。 実際には、特に仕事のタスクの変更はありません。私は個人的に、コードレビュー、メンターメンバー、BAのドキュメントのレビュー、テクニックの意見、新しいプロジェクトのデザインアーキテクチャなど、すでにシニアとしてプレーしたことがあると思います。先輩がいないままで、給与明細を反映させて面接に導くように頼んでもらいました。これはサース社であり、その製品がまだ存続している限り、人々は1つのプロジェクトにとどまります。これは、現在の製品に基づいてより多くの新機能を設計し、ライブサーバーの技術の難しさを修正し、設計/コードのレビュー/メンタリングを行えるようにする必要があることを示しています。メンバーそしてテクニックに基づいたより高いレベルのタイトルはアーキテクトであり、テクニカルエキスパートと同様の仕事はありません。また、テクニカルエキスパートの役割を果たしたい場合は、使用しているテクノロジーの詳細を知っておく必要があります。申し訳ありませんが、これらの背景を明らかにできなかったのは残念です。
10 interview 

3
Internet Explorerが他のブラウザーと非常に多くの非互換性を持っているのはなぜですか?
Internet Explorerには、他のブラウザーにはない独自の機能が多数あり、標準との非互換性も多数あります。それらの非互換性の原因が何であるかを誰かが知っていますか? 例:Crossriderフレームワークを使用してブラウザー拡張機能を開発しています。拡張機能は、[Windows | Mac OS | Linux]と[Chrome | Firefoxは]それはIE IEためのハンドルでは動作しません$(window).height()と$(window).scrollTop()は異なるビット。 その状況の既知の徹底的な分析、または原因を明らかにする内部関係者へのインタビューはありますか?それは企業文化、設計プロセス、QAの欠陥、またはいくつかの恐ろしい未知の遺産ですか?

6
「ソフトウェア開発者」の役割を定義するもの
私はジュニアソフトウェア開発者で、1年未満の会社で働いています。 ソフトウェア開発者であるということは、ソフトウェアとCODEを開発することを意味するといつも思っていましたが、私の仕事は、Jenkins、SQLレプリケーションなどのセットアップなど、管理タイプの仕事にあります。 これらのタイプのジョブは開発者の役割に含まれていますか、それとも開発者はソフトウェアのみを開発していますか?これについて上司と話すべきですか?これは、企業が「開発」スキルを評価するための一般的な方法ですか?
10 company  roles  task 

4
大規模なレガシーコードベースを更新して特定の品質基準を満たすにはどうすればよいですか?
レガシーコードベースを改善するためのツールとテクニックについては多くの情報がありますが、実際に成功したケーススタディはありません。ほとんどのアドバイスはミクロレベルであり、マクロレベルで役立つ証拠が不足しているため、役立つものの、多くの人々を納得させるものではありません。 大規模なレガシーコードベースを更新して今日の品質基準を満たすようにし、完全に書き直すのではなく、実際に成功することが証明されている段階的な改善を具体的に探しています。 前: 大:1MLOCより大きい レガシー:自動テストなし 品質が悪い:複雑度が高く、カップリングが高く、回避された欠陥が多い 後 自動テスト より簡単なアップデート/メンテナンス 高品質:複雑さの軽減、コードの分離、少数の回避された欠陥 大規模なレガシーコードベースを完全に書き換えずに、上記の品質基準を満たすように正常に更新するために、実際にどのような段階的な手順が証明されていますか? 可能であれば、バックアップの回答に「成功した」品質改善プロセスを経た大規模なレガシープロジェクトの会社または事例の例を含めてください。

5
MVCでは、モデルからの基本的なデータ取得をビューで実行できますか?
「細いコントローラー、ファットモデル」の概念と、出力用のデータが必要な場合にビューがモデルを直接呼び出すことができるという一般的な受け入れを考えると、コントローラーではなくビュー内のリクエストの「取得と表示」部分の処理を検討する必要がありますか?例(コードをかなり一般的なものにしようとする): コントローラ <?php class Invoice extends Base_Controller { /** * Get all the invoices for this month */ public function current_month() { // as there's no user input let's keep the controller very skinny, // DON'T get data from the Model here, just load the view $this->load->view('invoice/current_month'); } } 見る …

2
Knuthの基本的なアルゴリズムからのこのステートメントは現在も適用できますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 ある意味で10!(10階乗)は、計算するのが実用的なものとそうでないものとの間のおおよその境界線を表します。 これは、KnuthのTAOCP Fundamental Algorithms book(1973)からのものです。これはまだ有効なステートメントですか、それとも計算能力が古くなっていますか?

7
一時変数と行の長さの要件
Martin Fowlerのリファクタリングを読んでいます。それは一般的に優れていますが、ファウラーの推奨の1つが少し問題を引き起こしているようです。 Fowlerは、一時変数をクエリに置き換えることを推奨しているため、これの代わりに: double getPrice() { final int basePrice = _quantity * _itemPrice; final double discountFactor; if (basePrice > 1000) discountFactor = 0.95; else discountFactor = 0.98; return basePrice * discountFactor; } あなたはヘルパーメソッドに引き出します: double basePrice() { return _quantity * _itemPrice; } double getPrice() { final double discountFactor; if (basePrice() > …

3
複雑なEL式を単一のJavaBeanゲッターで置き換える必要がありますか?
JSFで、いくつかの変数に基づいて条件付きでレンダリングするコンポーネントがある場合、レンダーステートメントを処理するための最適な方法は何ですか。 テキストwoofは、動物が象または犬であり、動物がミュートになっていない場合にのみ表示されます。 オプション1: ビューでの実装: <h:outputText id="text" value="woof" rendered="#{animal.type == 'elephant' or animal.type == 'dog' and not(animal.mute)}"/> またはオプション2: カプセル化: <h:outputText id="text" value="woof" rendered="#{animal.barkingAnimal}"/> 実装あり: public class Animal { public boolean isBarkingAnimal() { return ("dog".equals(getType()) || "elephant".equals(getType())) && !isMute(); } ... どちらも機能します...しかし、シナリオを処理する正しい方法はどれですか?
10 jsf 

1
Webサービスの商用ライセンスキーを生成する
バックグラウンド Webベースのソフトウェアライセンスに関するビジネス上の質問があります。多くのWebサイトが、さまざまなAPIのサービスとしてソフトウェアを提供しています。良い例がGoogleのカスタム検索APIです。Webサービスを使用するプロセスは通常、次のようになります。 アカウント。ユーザーがアカウントを作成します。 サーバ。ユーザーは、APIリクエストを行うサーバーのIPアドレスを定義します。 キー。ユーザーは、目的のAPIの公開APIキーを受け取ります。 ガイド。ユーザーには、APIキーを使用してリクエストを行う方法を示すドキュメントが提供されます。 テスト。ユーザーは、統合機能を検証するためにテスト要求を行うことができます。 請求。ユーザーは、アカウントをアクティブにするために支払います。 製造。ユーザーはWebサービスをアプリケーションに統合します。 非アクティブ化。システムは、有効期限が切れた場合、要求の制限を超えた場合などにアカウントを非アクティブにします これらの要件は、ライセンスされているサービスとの統合に追加されます。 問題 これは中小企業にとっては大変な作業です。 ご質問 この問題に対処する既製のオープンソースプロジェクトは何ですか? そのようなプロジェクトがない場合、実行可能な低コストのソリューション(理想的には、各ライセンスのパーセンテージ)を設計するにはどうしますか?つまり、Webベースのサービスのライセンスを求める中小企業(収入がほとんどまたはまったくない)にどのソフトウェアまたは既存の商用サービスを使用しますか? ありがとうございました! 関連リンク Webアプリケーションのライセンスキーソリューション、最善のアプローチは何ですか? API管理システム

2
動的言語でモックを作成しているときにタイプエラーはどのように検出されますか?
TDDの実行中に問題が発生。いくつかのテストに合格すると、一部のクラス/モジュールの戻り値の型が変わります。静的に型付けされたプログラミング言語で、以前にモックされたオブジェクトが他のクラスのテストで使用され、型の変更を反映するように変更されていない場合、コンパイルエラーが発生します。 ただし、動的言語の場合、戻り値の型の変更が検出されず、他のクラスのテストは引き続き成功します。もちろん、後で失敗するはずの統合テストがあるかもしれませんが、単体テストは誤ってパスします。これを回避する方法はありますか? 簡単なサンプルで更新しています(一部の人工言語)... バージョン1: Calc = { doMultiply(x, y) {return x * y} } //.... more code .... // On some faraway remote code on a different file Rect = { computeArea(l, w) {return Calc.doMultipy(x*y)} } // test for Rect testComputeArea() { Calc = new Mock() Calc.expect(doMultiply, 2, 30) // …

4
データ構造を使用するアルゴリズムとデータベースを使用するアルゴリズムの違いは何ですか?
一般的な質問 データ構造を使用するアルゴリズムとデータベースを使用するアルゴリズムの違いは何ですか? いくつかのコンテキスト これはしばらくの間私を悩ませてきた質問であり、私はそれについて説得力のある答えを出すことができませんでした。 現在、もちろん、データ構造に深く関わるアルゴリズムの理解を深めることに取り組んでいます。これらは、バッグ、キュー、スタック、優先度キュー、ヒープなどの基本的な構造です。 また、データベースを日常的に使用して、エンドユーザーによって処理および送信された、またはプログラムによって処理されたデータを保存します。データベースのテーブルに基づいて生成される独自のデータ構造を持つDALを介して、データを取得して送信します。 私の質問は、データベースを使用してデータをソートして、昇順/降順で注文したデータを返送するか、データを取得してロジックにロードし、このデータを優先度キューで処理し、ヒープソートするオプションがあるときに発生しますそれのすべて。または、レコードのサブセットをロードするのではなく、データベースを使用してレコードを検索し、バイナリ検索のようなものを使用して、興味のあるレコードを見つけることもできます。 私の考えでは、通信は高価であるため、送信する前に、データベース側でできるだけ多くの操作を実行しようと思います。また、データベースのデータではなく、独自のロジック内で厳密に定義されたアルゴリズムとデータ構造を使用してデータを処理するのはいつですか。 だからここに質問があります... ご質問 データ構造とデータベースの違いは何ですか? データベースのロジックではなく、独自のロジック内でのみ定義されたデータ構造を使用するアルゴリズムをいつ使用しますか? @Harveyの投稿:データベース内のメソッドを使用すると、独自のロジック内のメソッドよりも効率が悪くなりますか? @mirculixxの投稿:メソッドを効率的にするものは何ですか? @Harveyポスト:データベースで行うよりもデータ構造でデータを処理する方が高速ですか? 明確化 @Grant post:私が通常使用するデータベースはリレーショナルであり、これらの質問はそれらを使用することから生まれています。ただし、これらの質問はどの永続フレームワークにも適用できると思います(フレームワークとは、最も一般的な意味での意味です)。 特定の文脈がないと答えが難しいことは知っています。考えられる食べ物、アドバイス、または議論のポイントは、主に私が探しているものであり、最もありがたいです!

3
RubyおよびC ++のOOP用語
私は学校でC ++クラスを受講しています。Rubyでプログラミングしたので、いくつかのOOPのことを知っています。 しかし、C ++には、メンバー関数、メンバー変数、および静的関数があります。Rubyには、インスタンスメソッド、インスタンス変数、クラス変数があります。そして、もっとあります... それらが異なる理由は何ですか?それらはOOPのかなり異なるレベルですか?それとも、これらの生態系の伝統の違いだけですか?

3
JavaアプリでのMVCの使用
クロスプラットフォームのGUIアプリケーションを記述して(複数のスレッドで)処理し、かなり大量のデータを視覚化する必要があります。理想的には、アプリケーションは比較的高速で見栄えがよいはずです。 アプリのインターフェイスは、テーブルウィジェット、ツリーウィジェット、およびカスタムの図形描画ウィジェットで構成されます。ユーザーはこれらのウィジェットのいずれかからデータを変更でき、変更は他のウィジェットにすぐに反映されます。 当然、MVCを使用する予定です。ただし、私は通常、すべてのGUIプログラミングをC ++ / Qtで行っており、Javaへの露出は非常に限られています。そのため、このようなアプリをJavaで整理する方法についてのアドバイスをいただければ幸いです。特に、SwingまたはJavaFXを使用する必要がありますか?仕事にどのウィジェットを選びますか?Javaプラットフォームのこれらの側面をカバーする本/オンラインチュートリアルをお勧めしますか? フィードバックをいただければ幸いです。ありがとう! (この質問は元々Stack Overflowに投稿されていましたが、このサイトはより適切な場所として提案されました)
10 java  mvc  swing  javafx 

4
データベースクエリはページ自体から抽象化する必要がありますか?
PHPでページ生成を作成するとき、データベースクエリが散らかっている一連のファイルを作成していることがよくあります。たとえば、次のように、投稿に関するデータをデータベースから直接フェッチしてページに表示するクエリがあるとします。 $statement = $db->prepare('SELECT * FROM posts WHERE id=:id'); $statement->bindValue(':id', $id, PDO::PARAM_INT); $statement->execute(); $post = $statement->fetch(PDO::FETCH_ASSOC); $content = $post['content'] // do something with the content これらの迅速な1回限りのクエリは通常は小さいですが、データベースのやり取りコードの大部分が結局乱雑に見えることがあります。 場合によっては、ポスト関連のdbクエリを処理する単純な関数ライブラリを作成し、コードのブロックを単純なものに短縮することで、この問題を解決しました。 $content = post_get_content($id); そして、それは素晴らしいことです。または、少なくとも何か他のことをする必要があるまでです。たぶん、最新の5つの投稿をリストに表示する必要があります。ええと、いつでも別の関数を追加できます。 $recent_posts = post_get_recent(5); foreach ($recent_posts as $post) { ... } しかしSELECT *、それは結局クエリを使用することになります。これは通常、とにかく必要はありませんが、しばしば複雑すぎて合理的に抽象化できません。最終的に私は、すべての単一のユースケースのデータベース相互作用関数の大規模なライブラリ、またはすべてのページのコード内の一連の乱雑なクエリのいずれかになります。そして、これらのライブラリを構築した後でも、以前に使用したことがない小さな結合を1つ実行する必要があることに気づき、その仕事を行うために、突然別の高度に専門化された関数を作成する必要があります。 確かに、一般的なユースケースや特定のやり取りのクエリに関数を使用することはできますが、生のクエリを書き始めるとすぐに、すべてに直接アクセスできるようになります。それとも、怠惰になって、MySQLクエリで直接実行する必要があるPHPループで処理を開始します。 インターネットアプリケーションの記述に詳しい方にお願いしたいと思います。コードの追加の行と、抽象化によって導入される可能性のある非効率性に見合う保守性の向上はありますか。それとも、直接クエリ文字列を使用するだけで、データベースの相互作用を処理するための許容できる方法ですか?

1
Core Data sqliteテーブルの列が「Z」で始まるのはなぜですか?
Core Dataが生成するsqliteテーブルを見ていて、すべてのテーブル列が「Z」で始まることに気付きました。これは実装の詳細であることに気づきましたが、なぜそうなるのか、そしてこれに関係する設計上の決定があるのか​​どうかについて知りました。誰かが偶然知っているか、なぜだと思いますか? Core Data sqliteデータベースのサンプルスキーマ出力を次に示します。 sqlite> .schema CREATE TABLE ZPOST(Z_PK INTEGER PRIMARY KEY、Z_ENT INTEGER、Z_OPT INTEGER、ZPOSTID INTEGER、ZUSER INTEGER、ZCREATEDAT TIMESTAMP、ZTEXT VARCHAR); CREATE TABLE ZUSER(Z_PK INTEGER PRIMARY KEY、Z_ENT INTEGER、Z_OPT INTEGER、ZUSERID INTEGER、ZAVATARIMAGEURLSTRING VARCHAR、ZUSERNAME VARCHAR); CREATE TABLE Z_METADATA(Z_VERSION INTEGER PRIMARY KEY、Z_UUID VARCHAR(255)、Z_PLIST BLOB); CREATE TABLE Z_PRIMARYKEY(Z_ENT INTEGER PRIMARY KEY、Z_NAME VARCHAR、Z_SUPER INTEGER、Z_MAX INTEGER);
10 ios  sqlite 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.