【Salesforce】【資格】Salesforce 認定上級 Platform デベロッパー 勉強メモ

***試験勉強のメモ書きです。あくまでも個人のメモ書きなの信用しすぎないようにしてください。***
個人的にまとめた簡単な設問と回答を載せます。※回答は▶を押すと表示されます。

 # ガバナ制限		
<details><summary>	SOQLクエリ発行数のガバナ制限は？	
</summary>	同期100　非同期200	</details>
<details><summary>	SOQLレコード数のガバナ制限は？	
</summary>	同期50,000　非同期50,000	</details>
<details><summary>	DML発行数のガバナ制限は？	
</summary>	同期150　非同期150	</details>
<details><summary>	DMLレコード数のガバナ制限は？	
</summary>	同期10,000　非同期10,000	</details>
<details><summary>	コールアウトのガバナ制限は？	
</summary>	同期100　非同期100	</details>
<details><summary>	最大 CPU 時間のガバナ制限は？	
</summary>	同期10,000ミリ秒　非同期60,000ミリ秒	</details>
<details><summary>	カスタムメタデータの SOQLクエリ発行数のガバナ制限は？	
</summary>	無制限	</details>
<details><summary>	insert、update、upsert、merge、delete、undelete以外でDMLとしてカウントされるメソッドは？	
</summary>	"Approval.process
Database.convertLead
Database.emptyRecycleBin
Database.rollback
Database.setSavePoint
EventBus.publish　※コミット後に公開するように設定されたプラットフォームイベントに対して
System.runAs"	</details>
		
# アノテーション		
<details><summary>	クライアント側およびサーバ側から Apex コントローラメソッドへのアクセスが可能になるアノテーションは？	
</summary>	@AuraEnabled	</details>
<details><summary>	今後のリリースの管理パッケージに含まれるが、参照されないメソッド、クラス、例外、列挙、インターフェース、変数につけるアノテーションは？	
</summary>	@Deprecated	</details>
<details><summary>	非同期で実行するメソッドにつけるアノテーションは？	
</summary>	@Future	</details>
<details><summary>	フローで呼び出し可能なアクションとして実行できるメソッドは？	
</summary>	@InvocableMethod	</details>
<details><summary>	@InvocableMethodを1つのクラスの複数のメソッドに付与することができるか？	
</summary>	できない	</details>
<details><summary>	InvocableMethod メソッドの呼び出し可能なアクションの入力または出力パラメータとして使用されるクラス変数を識別するアノテーションは？	
</summary>	@InvocableVariable	</details>
<details><summary>	テストに使用するコードのみを含むクラスおよびメソッドにつけるアノテーションは？	
</summary>	@IsTest	</details>
<details><summary>	クラスのインスタンスがシリアライズまたはデシリアライズできるか制御するアノテーションは？	
</summary>	@JsonAccess	</details>
<details><summary>	@JsonAccessのserializable および deserializableパラメータに指定できる値は？４つ	
</summary>	never、sameNamespace、samePackage、always	</details>
<details><summary>	パッケージ内の公開 Apex を同じ名前空間を使用する他のパッケージで使用できるようにするアノテーションは？	
</summary>	@NamespaceAccessible	</details>
<details><summary>	クエリ行数制限を100,000に増やせるアノテーションは？	
</summary>	@ReadOnly	</details>
<details><summary>	Visualforce で使用する Apex メソッドの JavaScript を介したコールが可能になるアノテーションは？	
</summary>	@RemoteAction	</details>
<details><summary>	サードパーティツールに情報を提供するために使用するアノテーションは？	
</summary>	@SuppressWarnings	</details>
<details><summary>	クラスのすべてのテストメソッドで使用できる一般的なテストレコード作成メソッドにつけるアノテーションは？	
</summary>	@TestSetup	</details>
<details><summary>	非公開メンバーにテストメソッドからアクセスできるようにするアノテーションは？	
</summary>	@TestVisible	</details>
		
#SOQL		
<details><summary>	標準およびカスタムの数値、日付、時間、通貨項目にローカライズされた書式を適用できるSELECT関数は？	
</summary>	FORMAT ()	</details>
<details><summary>	通貨項目をユーザの通貨に変換するSELECT関数は？	
</summary>	convertCurrency()	</details>
<details><summary>	dateTime 項目をユーザのタイムゾーンに変換するSELECT関数は？	
</summary>	convertTimezone()	</details>
<details><summary>	SOQL クエリの結果をクエリ送信者の言語に翻訳するSELECT関数は？	
</summary>	toLabel()	</details>
<details><summary>	SELECT Name, (SELECT LastName FROM Contact ) FROM Accountで誤っている箇所は？	
</summary>	Contact　→　Contacts	</details>
<details><summary>	インデックスをもつ標準項目は？	
</summary>	プライマリキー（Id、Name、OwnerId）、外部キー（CreatedById、LastModifiedById、ルックアップ、主従関係）、監査項目（CreatedDate、SystemModstamp）	</details>
<details><summary>	インデックスを持つカスタム項目は？	
</summary>	一意、外部 ID	</details>
<details><summary>	クエリ結果に大量のレコードが含まれると予想される場合、複数ページに表示するためにSOQL クエリに入れる構文は？	
</summary>	OFFSET	</details>
<details><summary>	レコードの更新中に sObject レコードをロックする構文は？	
</summary>	FOR UPDATE	</details>
<details><summary>	集計関数を使用したSOQLによって返されるデータ型は？	
</summary>	List<AggregateResult>	</details>
<details><summary>	SOSLによって返されるデータ型は？	
</summary>	List<List<sObject>>	</details>
<details><summary>	Database.Query()の最大取得件数は？	
</summary>	5万件	</details>
<details><summary>	Database.getQueryLocator()の最大取得件数は？	
</summary>	ApexBatchだと5000万件（VFのStandardSetControllerだと1万件）	</details>
<details><summary>	動的SOQLでバインド変数myTestStringは使用できるか？	
</summary>	できる	</details>
<details><summary>	動的SOQLでバインド変数項目myVariable.field1__cを使用できるか？	
</summary>	できない	</details>
<details><summary>	SOQL インジェクションを防ぐ方法は？	
</summary>	escapeSingleQuotes()　ユーザから渡される文字列のすべての単一引用符にエスケープ文字 (\) を追加しコマンドではなく文字列として処理する	</details>
		
# DML		
<details><summary>	Savepoint変数を使用してロールバッグをする際に使用するDatabaseクラスのメソッドは？	
</summary>	"setSavepoint()、rollback()
Savepoint sp = Database.setSavepoint();
～DML処理～
Database.rollback(sp);"	</details>
<details><summary>	savepoint SP1 を生成し、次に savepoint SP2 を生成した場合、SP1 にロールバックするとSP2 はどうなるか？	
</summary>	無効になる	</details>
<details><summary>	savepoint の設定後に挿入された sObject の ID は、ロールバック後にクリアされるか？	
</summary>	されない	</details>
<details><summary>	DML 操作で同時に使用できない sObjectの例は？	
</summary>	ユーザ、権限セット、グループ、ロール、プロファイル	</details>
		
# API		
<details><summary>	Apex の一括処理でのコールアウトを使用するにはクラス定義に何を指定するか？	
</summary>	Database.AllowsCallouts 	</details>
<details><summary>	ユーザ定義型を Apex REST メソッドのパラメータとして使用する際の注意事項は？	
</summary>	static、transientの変数はデシリアライズされない	</details>
<details><summary>	Apex REST メソッドにおいてパラメータの順序は考慮されるか？	
</summary>	されない	</details>
<details><summary>	Apex REST メソッドの引数String s1についてXML形式のリクエストではどのように記述するか？	
</summary>	<s1>my first string</s1>	</details>
<details><summary>	Apex REST メソッドの引数String s1についてJSON形式のリクエストではどのように記述するか？	
</summary>	s1 : "my first string"	</details>
<details><summary>	Apex REST メソッドの引数Integer i1についてXML形式のリクエストではどのように記述するか？	
</summary>	<i1>123</i1>	</details>
<details><summary>	Apex REST メソッドの引数Integer i1についてJSON形式のリクエストではどのように記述するか？	
</summary>	i1 : 123,	</details>
<details><summary>	1 トランザクションで、Httpコールアウトの最大回数は？	
</summary>	100	</details>
<details><summary>	同じトランザクション内で待機中があるとコールアウトを実行できない処理は？	
</summary>	DML ステートメント、非同期 Apex (future メソッドや Apex 一括処理ジョブなど)、スケジュール済み Apex、メールの送信	</details>
<details><summary>	RESTコールアウトクラスのテストクラスで実装するMockは？	
</summary>	HttpRequestMock	</details>
<details><summary>	SOAPコールアウトクラスのテストクラスで実装するMockは？	
</summary>	WebServiceMock	</details>
<details><summary>	Webサービスクラスのテストクラスで実装するMockは？	
</summary>	なし	</details>
<details><summary>	SalesforceとREST Webサービスの間に双方向SSLを確立したい、証明書あり。このときはどう実装する？	
</summary>	証明書とキーの管理で証明書のエントリを作成する、HttpRequest.setClientCertificateNameを使用する	</details>
<details><summary>	SOAP APIで単独の Salesforce 組織のクライアントアプリケーションを構築する場合に使用するWSDLは？	
</summary>	EnterpriseWSDL	</details>
<details><summary>	SOAP APIで複数の Salesforce 組織のクライアントアプリケーションを構築する場合に使用するWSDLは？	
</summary>	Partner WSDL	</details>
<details><summary>	BulkAPIについて1バッチのレコードの最大数は？	
</summary>	10000	</details>
<details><summary>	BulkAPI2.0について1バッチのレコードの最大数は？	
</summary>	なし	</details>
<details><summary>	BulkAPIについて24 時間周期で可能なバッチ数は？	
</summary>	15000	</details>
<details><summary>	BulkAPIとBulkAPI2.0について24 時間周期でアップロード可能なレコードの最大数は？	
</summary>	150,000,000	</details>
<details><summary>	BulkAPIについて最大ファイルサイズは？	
</summary>	1 バッチあたり 10 MB	</details>
<details><summary>	BulkAPI2.0について最大ファイルサイズは？	
</summary>	1 ジョブあたり 150 MB	</details>
<details><summary>	BulkAPIとBulkAPI2.0について1 レコードの最大項目数は？	
</summary>	5,000	</details>
<details><summary>	Apex REST アノテーションの種類は？６つ	
</summary>	"@ReadOnly
@RestResource(urlMapping='/yourUrl')
@HttpDelete
@HttpGet
@HttpPost
@HttpPut"	</details>
		
# 非同期処理		
<details><summary>	長時間を要するメソッドがありApex トランザクションの遅延を防止する必要がある。外部 Web サービスへのコールアウトを実行する。DML 操作を分離して混合保存 DML エラーを回避する。の要件に適切な非同期処理は？	
</summary>	@future(callout = true)	</details>
<details><summary>	長時間を要する操作を開始しその ID を取得する。複雑なデータ型をジョブに渡す。ジョブをチェーニングする。の要件に適切な非同期処理は？	
</summary>	Queueableインターフェース	</details>
<details><summary>	特定のスケジュールで実行するために Apex クラスをスケジュールする。の要件に適切な非同期処理は？	
</summary>	Schedulableインターフェース	</details>
<details><summary>	大量のデータを処理する長時間のジョブを複数バッチで実行する。通常のトランザクションで許容されるよりも大きなクエリ結果が必要になる。の要件に適切な非同期処理は？	
</summary>	Database.Batchable インターフェース	</details>
<details><summary>	SOAP または REST Web サービスに対して非同期にコールアウトを実行するために使用するクラスは？	
</summary>	Continuation	</details>
		
# 例外		
<details><summary>	非同期コールのエンキューの失敗など、非同期処理に関する問題を示す例外は？	
</summary>	AsyncException	</details>
<details><summary>	外部システムへのコールアウトの失敗など、Web サービス処理に関する問題を示す例外は？	
</summary>	CalloutException	</details>
<details><summary>	参照のみのコレクションまたはレコード (after-update トリガの sObject やファイナル変数など) を変更しようとすると発生する例外は？	
</summary>	FinalException	</details>
<details><summary>	範囲外のインデックスへのアクセスなど、リストに関する問題を示す例外は？	
</summary>	ListException	</details>
<details><summary>	0 による除算など、算術演算に関する問題を示す例外は？	
</summary>	MathException	</details>
<details><summary>	現在のユーザがアクセス権を付与されていない sObject へのアクセスなど、承認されないアクセスに関する問題を示す例外は？	
</summary>	NoAccessException	</details>
<details><summary>	sObject の単一変数に対する、レコードを返さない、または複数のレコードを返すクエリの割り当てなど、SOQL クエリに関する問題を示す例外は？	
</summary>	QueryException	</details>
<details><summary>	valueOf メソッドを使用した string 型「a」の integer 型への変換など、型の変換に関する問題を示す例外は？	
</summary>	TypeException	</details>
<details><summary>	キャッチできない例外は？	
</summary>	LimitException、AssertException、ライセンスの例外	</details>
		
# Apex全般		
<details><summary>	現在のユーザーのロケールで日付を文字列に変換するApexメソッドは？	
</summary>	Date.format	</details>
<details><summary>	静的リソースに保存したCSVのテストデータの読込方法は？	
</summary>	List<sObject> ls = Test.loadData(Account.sObjectType, 'myResource');	</details>
<details><summary>	Apexをフローから呼び出したい場合に使用するのは？	
</summary>	 @InvocableMethod、Process.Plugin インターフェース	</details>
<details><summary>	ユーザのレコード共有を強制実行するメソッドは？	
</summary>	System.runAs()	</details>
<details><summary>	カスタムコントローラの「getxxx」メソッドでは、DMLを使用できるか？	
</summary>	できない	</details>
<details><summary>	カスタムコントローラの「getxxx」または「setxxx」メソッドに @future アノテーションは使用できるか？	
</summary>	できない	</details>
<details><summary>	sObject のトークンにアクセスする方法は？２つ	
</summary>	"Account などの sObject データ型の sObjectType メンバー変数にアクセス→Account.sObjectType
sObject Describe Result、sObject 変数、リスト、または対応付けの getSObjectType()→acc.getSObjectType()"	</details>
<details><summary>	sObject Describe Result にアクセスする方法は？２つ	
</summary>	"sObject トークンの getDescribe()　→Account.sObjectType.getDescribe()
sObject の名前が付いている Schema sObjectType 静的変数を使用　→Schema.SObjectType.Account"	</details>
<details><summary>	項目のトークンにアクセスする方法は？２つ	
</summary>	"sObject 静的データ型の静的メンバー変数名にアクセス　→Account.Description
Field Describe Result の getSObjectField()　→dfr.getSObjectField()"	</details>
<details><summary>	Field Describe Result にアクセスする方法は？２つ	
</summary>	"項目トークンの getDescribe()　→Account.Description.getDescribe()
sObject トークンの fields メンバー変数に、項目メンバー変数 (Name、BillingCity など) を使用　→Schema.SObjectType.Account.fields.Name"	</details>
<details><summary>	すべての sObject にアクセスする方法は？	
</summary>	Schema getGlobalDescribe() →Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();	</details>
<details><summary>	sObject のすべての Field Describe Result にアクセスする方法は？	
</summary>	Field Describe Result の getMap()　→Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Account.fields.getMap();	</details>
<details><summary>	項目トークンは、個人取引先では使用できるか？	
</summary>	できない	</details>
<details><summary>	B2B Commerce、CMS 管理コンテンツ、Experience Cloud サイト、トピックなどにプログラムでアクセスする方法は？	
</summary>	Connect in Apex	</details>
<details><summary>	ConnectApi クラスとその他の Apex クラスの違いは？６つ	
</summary>	"ConnectApiはシステムモードでは実行されない
sharingを無視
一部の ConnectApi操作は非同期
XML シリアライゼーションおよびデシリアライゼーション、SON シリアライゼーションおよびデシリアライゼーションはサポートされない
VARIABLE_ASSIGNMENT ログイベントに表示されない
webserviceキーワード で指示された Apex SOAP Web サービス内では使用できない"	</details>
<details><summary>	webserviceキーワードで定義されたメソッドで引数や戻り値に設定できない型は？	
</summary>	Map、Set、Pattern、Matcher、Exception	</details>
<details><summary>	webservice キーワードで定義されているメソッドを含むすべてのクラスのアクセス修飾子は何である必要があるか？	
</summary>	global 	</details>
<details><summary>	webservice キーワードを使用するメソッドについて留意事項は何か？ 	
</summary>	static	</details>
<details><summary>	テストクラスでIsTest(SeeAllData=true) アノテーションなしに組織のデータにアクセスできるオブジェクトは？	
</summary>	"User
Profile
Organization
CronTrigger
RecordType
ApexClass
ApexTrigger
ApexComponent
ApexPage"	</details>
<details><summary>	現在のユーザーのロケールで日付を文字列に変換するApexメソッドは？	
</summary>	Date.format	</details>
<details><summary>	Apexによる共有はbeforeトリガとafterトリガどちらで作成するか？	
</summary>	afterトリガ	</details>
<details><summary>	Matcherオブジェクトのregionメソッドを使用して、リージョンの開始点は変更せず、終了点を明示的に指定するコードは？	
</summary>	MyMatcher.region(MyMatcher.regionStart(), end);	</details>
		
# 開発者コンソール		
<details><summary>	DML、SOQL、SOSLなどを示すログカテゴリは？	
</summary>	データベース	</details>
<details><summary>	ワークフロールール、フロー、プロセスの情報を示すログカテゴリは？	
</summary>	ワークフロー	</details>
<details><summary>	Einstein Next Best Action 活動に関する情報を示すログカテゴリは？	
</summary>	NBA	</details>
<details><summary>	入力規則に関する情報を示すログカテゴリは？	
</summary>	入力規則	</details>
<details><summary>	サーバが外部 Web サービスから送受信している要求応答 XML を記録するログカテゴリは？	
</summary>	コールアウト	</details>
<details><summary>	DML ステートメントによって生成されたログメッセージ、インライン SOQL または SOSL クエリ、トリガの開始と完了、テストメソッドの開始と完了などを示すログカテゴリは？	
</summary>	Apex コード	</details>
<details><summary>	名前空間の制限、送信されるメール数などの累積プロファイリング情報を示すログカテゴリは？	
</summary>	Apex プロファイリング	</details>
<details><summary>	ビューステートのシリアライゼーションおよびデシリアライゼーション、Visualforce ページの数式項目の評価など、Visualforce のイベントに関する情報を記録するログカテゴリは？	
</summary>	Visualforce	</details>
<details><summary>	System.debug メソッドなど、すべてのシステムメソッドへのコールに関する情報を記録するログカテゴリは？	
</summary>	システム	</details>
<details><summary>	開発者コンソールのログインスペクタに含めることができるパネルは？	
</summary>	"Stack Tree (スタックツリー)
Execution Stack (実行スタック)
Execution Log (実行ログ)
Source (ソース)
Variables (変数)
Execution Overview (実行概要)"	</details>
<details><summary>	Lightning ページや Lightning コミュニティページ、または Lightning Experience や Salesforce モバイルアプリケーションのクイックアクションやナビゲーション項目を簡単に作成できる開発者コンソールの機能は？	
</summary>	Lightningバンドル設定	</details>
<details><summary>	処理速度が遅い SOQL クエリのクエリプランをチェックするのに使用する開発者コンソールの機能は？	
</summary>	クエリプランツール	</details>
<details><summary>	System.debug() の各コールの実行時間を確認できる開発者コンソールの機能は？	
</summary>	Stack Tree (スタックツリー)パネルのExecution Tree (実行ツリー)	</details>
<details><summary>	メソッド内でSystem.debug()を何回行ったか確認できる開発者コンソールの機能は？	
</summary>	Stack Tree (スタックツリー)パネルのPerformance Tree (パフォーマンスツリー)	</details>
		
# Visualforce		
<details><summary>	Visualforce ページの標準応答制限は？	
</summary>	15 MB	</details>
<details><summary>	ビューステートの削減方法は？３つ	
</summary>	絞り込みやページネーション必要データを減らす	</details>
<details><summary>	transient キーワードを使用してデータを参照のみにする。	
</summary>	JavaScript Remoting を使用する	</details>
<details><summary>	コントローラ拡張が複数ありそれぞれに同名メソッドがある場合どれが優先されるか？	
</summary>	先に記述されたコントローラ	</details>
<details><summary>	AJAX 要求を使用したコントローラの action メソッドを JavaScript コードから直接呼び出すことをサポートするコンポーネントは？	
</summary>	apex:actionFunction	</details>
<details><summary>	特定の重要度に対するエラー、警告、およびその他の種類のメッセージ用の Salesforce スタイルを使用してカスタムメッセージを表示するコンポーネントは？	
</summary>	apex:pageMes​​sage	</details>
<details><summary>	Salesforce スタイルを使用して、現在のページのすべてのコンポーネントに対して生成されたすべてのメッセージを表示するコンポーネントは？	
</summary>	apex:pageMes​​sages	</details>
<details><summary>	警告またはエラーなど、特定のコンポーネントに対するメッセージを表示するコンポーネントは？	
</summary>	apex:message	</details>
<details><summary>	現在のページのすべてのコンポーネントに生成されたすべてのメッセージを表示するコンポーネントは？	
</summary>	apex:messages	</details>
<details><summary>	Visualforce ページの get 要求の実行順序は？	
</summary>	"①ビューステートの復号化
②式を評価、すべての set メソッドを実行
③postback 要求をトリガしたアクションを実行。ビューステートの更新。
④HTMLをブラウザに送信
⑤HTML応答をブラウザに送信"	</details>
<details><summary>	Visualforce ページの postback 要求の実行順序は？	
</summary>	"①ビューステートの復号化
②式を評価、すべての set メソッドを実行
③postback 要求をトリガしたアクションを実行。ビューステートの更新。
④HTMLをブラウザに送信"	</details>
		
# Chatter		
<details><summary>	ConnectApi名前空間はApexで何を操作するか	
</summary>	Chatter	</details>
<details><summary>	 ApexメソッドのChatterはシステムモードで実行されるか？	
</summary>	されない（ユーザモード）	</details>
<details><summary>	Chatterで特定のユーザやレコードをフォローしているユーザの情報を格納しているオブジェクトは？	
</summary>	EntitySubscription	</details>
		
# その他		
<details><summary>	宣言型ツールの特徴は？	
</summary>	"一般的に迅速かつ低コストで作成できる
一般的にメンテナンス作業が少ない
ツールが改善されると自動にアップグレードされる
ガバナ制限が適用されない"	</details>
<details><summary>	複合型項目の種類は？２つ	
</summary>	住所、地理位置情報	</details>
<details><summary>	複合型項目の値変更の留意点は？	
</summary>	個別の項目を変更する必要がある	</details>
<details><summary>	階層のカスタム設定はどのレベルに定義できるか？	
</summary>	"ユーザー
プロファイル
組織"	</details>
<details><summary>	Salesforce 組織と Heroku Postgres データベースの間でデータを同期するアドオンは？	
</summary>	Heroku Connect	</details>
<details><summary>	メタデータ取得・デプロイ、クエリ、DML、REST API実行、Apex実行、ユーザパスワード変更などが可能なツールは？	
</summary>	Workbench	</details>
<details><summary>	項目履歴データの保持期間は？	
</summary>	18か月	</details>
<details><summary>	単体テストを実行できるAPIは？	
</summary>	メタデータAPI、Tooling REST API、SOAP API	</details>
<details><summary>	プッシュ技術を使用してイベントのストリーミングを行い、ほぼリアルタイムでイベントを受信する登録メカニズムを提供する機能は？	
</summary>	Streaming API	</details>