

















































































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
This exam tests the ability to build enterprise bots using Java on the Symphony platform. It covers SDK usage, message handling, real-time event streams, workflow automation, integration with legacy systems, robust error management, and secure authentication processes. Candidates must demonstrate Java coding proficiency, architectural understanding, and bot deployment capabilities.
Typology: Exams
1 / 89
This page cannot be seen from the preview
Don't miss anything!


















































































Question 1. Which component of the Symphony ecosystem is responsible for storing and distributing user public keys for end‑to‑end encryption? A) Pod B) Key Manager C) Agent D) Datafeed Service Answer: B Explanation: The Key Manager holds users’ public keys and supplies them to the Pod and agents to enable end‑to‑end encryption. Question 2. In Symphony’s security model, which cryptographic algorithm is primarily used for encrypting the symmetric session key during message transmission? A) RSA B) AES‑ 256 C) SHA‑ 256 D) ECC Answer: A Explanation: RSA encrypts the symmetric session key, which is then used with AES‑256 for the actual message payload. Question 3. When a bot sends a message, which service validates the bot’s entitlements before the message is delivered to the recipient? A) Datafeed Service B) Authentication Service C) Authorization Service D) Message Service
Answer: C Explanation: The Authorization Service checks the bot’s entitlements (permissions) to ensure it can post to the target stream. Question 4. Which of the following best describes the difference between a Symphony bot and an Extension App? A) Bots use service accounts; Extension Apps use user‑based OAuth tokens. B) Bots can only send plain text; Extension Apps can send rich media. C) Bots run on the Pod; Extension Apps run on external servers. D) Bots have no entitlement checks; Extension Apps do. Answer: A Explanation: Bots authenticate with service‑account credentials, whereas Extension Apps act on behalf of a user via OAuth. Question 5. In the BDK config.yaml, which property defines the host name of the Symphony Pod the bot will connect to? A) pod.host B) pod.url C) symphony.pod D) connection.host Answer: A Explanation: The pod.host field specifies the DNS name or IP address of the Pod. Question 6. Which authentication mode requires the bot to present a PKCS#12 file containing both the private key and the certificate chain? A) RSA Authentication
Question 9. What is the primary purpose of the Datafeed Service in a Symphony bot? A) To store historical messages B) To provide a real‑time stream of events to the bot C) To encrypt outgoing messages D) To manage user presence information Answer: B Explanation: The Datafeed Service delivers real‑time events (messages, room changes, etc.) to the bot. Question 10. Which method is called when a bot receives a new chat message via the Datafeed? A) onMessageReceived B) onMessageSent C) handleMessageEvent D) processIncomingMessage Answer: B Explanation: The onMessageSent callback processes incoming chat messages. Question 11. Datafeed 2.0 introduced which key improvement for large‑scale bot deployments? A) Automatic message translation B) Multi‑instance scaling with sharding C
Question 11. Which method in the BDK Message Service is used to send a MessageML payload to a specific stream? A) sendMessage B) postMessage C) createMessage D) publishMessage Answer: A Explanation: MessageService.sendMessage(streamId, messageML) sends a MessageML formatted message to the given stream. Question 12. In MessageML, which tag is used to create a clickable hyperlink? A) <a> B) <link> C) <url> D) <hyperlink> Answer: A Explanation: The <a href="..."> tag defines a hyperlink in MessageML. Question 13. Which of the following MessageML tags is NOT supported by Symphony? A) <b> for bold text B) <h1> for headings
A) AttachmentService B) FileService C) MessageService D) StreamService Answer: A Explanation: AttachmentService.upload handles file uploads and returns an attachment ID for later use. Question 17. Which of the following is the correct way to reference an uploaded attachment in MessageML? A) <attachment id="..."/> B) <file id="..."/> C) <img src="..."/> D) <link href="..."/> Answer: A Explanation: The <attachment id="..."/> tag embeds a previously uploaded file. Question 18. In a Symphony slash command, which prefix must be used to trigger the command? A) ! B) # C) / D) @ Answer: C Explanation: Slash commands start with / (e.g., /help).
Question 19. Which BDK class is responsible for parsing and handling slash command payloads? A) SlashCommandParser B) CommandHandler C) CommandService D) SlashCommandListener Answer: D Explanation: SlashCommandListener receives and processes slash command events. Question 20. To match a slash command using a regular expression, which method should be overridden? A) onCommandMatch B) matches C) getPattern D) handle Answer: B Explanation: Overriding matches(String command) allows custom regex matching for commands. Question 21. Which Symphony Element type creates a dropdown list in a form? A) Select B) ComboBox C) Dropdown D) ListBox Answer: A Explanation: The Select element renders a dropdown list in Symphony forms.
Explanation: StreamService.createIM(userId) creates a direct IM stream. Question 25. To add a member to an existing room, which BDK method should be used? A) addMemberToRoom B) addRoomMember C) addMembers D) inviteToRoom Answer: B Explanation: RoomService.addRoomMember(roomId, userId) adds a user to a room. Question 26. Which attribute of a room can be modified to make it private? A) visibility B) access C) type D) privacy Answer: A Explanation: Setting visibility to PRIVATE changes the room’s privacy. Question 27. Which BDK service provides the current presence status of a user? A) PresenceService B) ConnectionService C) UserService D) StatusService Answer: A
Explanation: PresenceService.getPresence(userId) returns the user’s presence (online, offline, etc.). Question 28. In a Spring Boot application using bdk-spring-boot-starter, which annotation enables automatic BDK bean configuration? A) @EnableBdk B) @BdkConfiguration C) @EnableSymphonyBdk D) @SpringBootApplication (no extra annotation) Answer: A Explanation: @EnableBdk triggers auto‑configuration of BDK components in Spring Boot. Question 29. Which JUnit 5 annotation is provided by the BDK testing library to spin up a mock Symphony environment? A) @SymphonyTest B) @BdkMock C) @SymphonyBdkTest D) @MockBdk Answer: C Explanation: @SymphonyBdkTest sets up a mock Symphony context for unit tests. Question 30. When mocking the MessageService with Mockito, which method is used to verify that sendMessage was called exactly once? A) verify(messageService, times(1)).sendMessage(anyString(), anyString()); B) assertCalledOnce(messageService.sendMessage); C) Mockito.check(messageService).sendMessage();
A) Send the entire payload in a single MessageML message. B) Split the payload into multiple messages and use attachments for binary data. C) Encode the payload as Base64 and embed it in EntityJSON. D) Compress the payload and send it as a plain text message. Answer: B Explanation: Splitting large content and using attachments avoids MessageML size limits and improves readability. Question 34. What is the maximum size allowed for a MessageML payload (excluding attachments) in Symphony? A) 5 KB B) 10 KB C) 15 KB D) 20 KB Answer: B Explanation: Symphony enforces a 10 KB limit for MessageML messages. Question 35. Which BDK method retrieves the list of members in a given room? A) listRoomMembers B) getRoomMembers C) fetchMembers D) retrieveRoomMembers Answer: B Explanation: RoomService.getRoomMembers(roomId) returns the member list.
Question 36. To promote a room member to owner, which role value must be set? A) ADMIN B) OWNER C) MODERATOR D) MANAGER Answer: B Explanation: The OWNER role grants full administrative rights in a room. Question 37. Which of the following is NOT a valid Datafeed event type? A) MessageSent B) RoomCreated C) UserPresenceChanged D) ConnectionRequested Answer: C Explanation: Presence changes are delivered via the Presence Service, not the Datafeed. Question 38. In the BDK, which interface must be implemented to process real‑time events from the Datafeed? A) RealTimeEventProcessor B) DatafeedListener C) RealTimeEventListener D) EventHandler Answer: C Explanation: RealTimeEventListener defines callbacks for Datafeed events.
Question 42. What is the purpose of the heartbeatIntervalMs setting in the Datafeed configuration? A) To define how often the bot pings the Pod to keep the connection alive. B) To set the maximum time the bot waits for a Datafeed response. C) To control the frequency of Datafeed reconnection attempts. D) To schedule periodic cleanup of old Datafeed entries. Answer: A Explanation: heartbeatIntervalMs determines the interval at which the bot sends heartbeats to maintain the Datafeed session. Question 43. Which HTTP status code indicates that a bot’s request to the Message Service was malformed? A) 400 B) 401 C) 403 D) 404 Answer: A Explanation: 400 Bad Request signals a malformed payload or missing required fields. Question 44. When a bot needs to retrieve the historical messages of a stream, which BDK method should be used? A) getMessages B) listMessages C) fetchMessages D) retrieveMessages
Answer: B Explanation: MessageService.listMessages(streamId, queryParams) fetches historical messages. Question 45. Which parameter must be provided to limit the number of messages returned by listMessages? A) limit B) maxResults C) pageSize D) count Answer: A Explanation: The limit query parameter caps the number of returned messages. Question 46. In Symphony, which entity type is used to represent a cashtag in EntityJSON? A) cashTag B) cashtag C) stockTag D) symbol Answer: B Explanation: The cashtag entity indicates a financial ticker (e.g., $AAPL). Question 47. Which Freemarker built‑in function can be used to escape user‑provided text for safe inclusion in MessageML? A) ?escape B) ?html C) ?xml
B) PodRegistryService C) PodInfoService D) ConnectionService Answer: A Explanation: PodDiscoveryService provides information about available Pods. Question 51. Which security principle does Symphony’s end‑to‑end encryption primarily enforce? A) Confidentiality B) Integrity C) Availability D) Non‑repudiation Answer: A Explanation: E2EE ensures that only the sender and receiver can read the message content, guaranteeing confidentiality. Question 52. In RSA authentication, what is the typical length of the private key used by a bot? A) 1024 bits B) 2048 bits C) 3072 bits D) 4096 bits Answer: B Explanation: 2048‑bit RSA keys are the standard for secure authentication in Symphony.
Question 53. Which of the following is a required field in the serviceAccount section of config.yaml? A) username B) email C) id D) certificatePath Answer: C Explanation: The serviceAccount.id uniquely identifies the bot’s service account. Question 54. When using certificate authentication, which Java keystore type is typically employed? A) JKS B) PKCS C) BCFKS D) PKCS Answer: B Explanation: PKCS12 (.p12) is the standard format for certificate‑based authentication. Question 55. Which BDK class provides utilities for converting between PEM and DER formats for RSA keys? A) KeyConverter B) PemUtils C) RsaKeyUtil D) KeyFormatHelper Answer: C Explanation: RsaKeyUtil contains methods to read PEM/DER keys.