This is an old revision of the document!
Table of Contents
Study Questions - Lucy Dip Creation
1. Copy the source of the questions and paste into Notepad++.
2. Remove the tag bit at the bottom.
3. In regular expression mode, replace
^====+.+====$
with nothing.
4. In extended mode, replace
/* --== Answer Question separator ==-- */
with
<html>\n </td>\n </tr>\n <tr>\n <td width="50%">\n</html>\n
5. In extended mode, replace
/* --== Question Answer separator ==-- */
with
\n<html>\n </td>\n <td width="50%">\n</html>
6. Replace the first html element with
<html> <table border="1" width="100%"> <tr> <td width="50%"> </html>
7. Add this to end
<html> </td> </tr> </html>
8. Select all and copy to the clipboard.
9. Goto http://tallguyracing.com/wiki/doku.php?id=playground:playground and edit.
10. Paste from the clipboard and save it.
11. Select it (including the RSS XML Feed etc buttons).
12. Open a new document in OpenOffice and paste the contents into it.
13. Delete all the crap at the top.
14. Load styles → Wiki Export 2, Text + Pages + Overwrite.
15. Right click table → Table… → Text Flow tab → Untick Allow row to break…
16. For each page,
16.1. Put the cursor in the last row of the page.
16.2. Click the Insert Row button lots.
16.3. Copy and paste the all the cells on the first page to the second. Note that this will overwrite the cells, so if there are not some blanks leftover, undo and go back to 17.2.
16.4. Delete the blank cells.
17. Modify the paragraph style 'Table Contents'. Change the Font color to black.
18. Highlight the left columns of odd pages and the right columns of the even pages (outside ones if two pages are displayed at once), change the background colour to black.
19. Select everything and paste into the master StudyQuestions file.
Questions To Be Lucky Dipped
Lesson 2: Debugging and Tracing
C10L2Q1: How can you programmatically signal a break to the debugger?
Answer: Call the Debugger.Log method.
C10L2Q2: How do you prevent a member from appearing in the variable watch window while debugging?
Answer: Add a DebuggerBrowsable attribute to the member and pass in DebuggerBrowserState.Never.
C10L2Q3: How do you specify what text will appear in the Value column of the variable watch window for a custom class while debugging?
Answer: Add a DebuggerDisplay attribute to the member.
C10L2Q4: What does the DebuggerDisplay attribute do?
Answer: Specifies what should be displayed in the Value column of the variable watch window while debugging.
C10L2Q5: What does the DebuggerHidden attribute do?
Answer: It prevents the debugger from breaking inside a class, method or property, even if there is a breakpoint.
C10L2Q6: How do you prevent the debugger from breaking inside a class, method or property, even if there is a breakpoint?
Answer: Add a DebuggerHidden attribute to the class, method or property.
C10L2Q7: How do you cause the debugger to automatically step over a section of code?
Answer: Add a DebuggerStepThrough attribute to the code.
C10L2Q8: What does the DebuggerStepThrough attribute do and how is it different to the DebuggerHidden attribute?
Answer: The DebuggerStepThrough attribute causes the debugger to step over the code it decorates, but does not hide the code like the DebuggerHidden attribute does.
Lesson 3: Monitoring Performance
C10L3Q1: What is the difference between the Trace class and the Debug class?
Answer: The Trace class is implemented in both the release and debug builds, whereas Debug is only implemented in debug builds.
C10L3Q2: What are the four primary methods of getting a reference to a process or processes?
Answer: The GetCurrentProcess, GetProcessById, GetProcessByName and GetProcesses.
C10L3Q3: How do you start an external executable from .NET code?
Answer: Call the Process.Start method.
C10L3Q4: How do you start an external executable with command line arguments from .NET code?
Answer: Create or get a reference to a ProcessStartInfo object, set the Arguments property and pass it to the Process.Start method.
C10L3Q5: What object type should secure text be stored in?
Answer: SecureString
Lesson 4: Detecting Management Events
C10L4Q1: What are the four most important members of the System.Management namespace?
Answer: ManagementQuery, EventQuery, ObjectQuery and ManagementObjectQuery.
C10L4Q2: What does WMI stand for?
Answer: Windows Management Instrumentation.
C10L4Q3: What are the two steps to retrieve information from the WMI?
Answer:
- Create a ManagementObjectSearcher object and pass the query into the constructor.
- Obtain a ManagementObjectCollection object by calling the ManagementObjectSearcher's Get method.
C10L4Q4: What needs to be selected from to enumerate the logical drives?
Answer: Win32_LogicalDisk
C10L4Q5: What needs to be selected from to enumerate the network adapters?
Answer: Win32_NetworkAdapterConfiguration
C10L4Q6: What needs to be selected from to enumerate the Windows Services?
Answer: Win32_Service
C10L4Q7: What class would be used to respond a change in the WMI?
Answer: ManagementEventWatcher
Lesson 1: Understanding Code Access Security
C11L1Q1: What does CAS stand for?
Answer: Code Access Security.
C11L1Q2: What is the relationship between evidence, code groups and permission sets?
Answer: The evidence that an assembly has determines what code group or groups it belongs to. The code group or groups determines what permission set or sets it gets.
C11L1Q3: What are the two types of evidence?
Answer: Host evidence and assembly evidence.
Pragmatic Programming
PragC2Q4: What is a technique for avoiding or reducing imposed duplication?
Answer: Code generation.
PragC2Q5: What is Meyer's Uniform Access principle?
Answer:
“All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation.”
or
“Class properties are good.”
PragC2Q6: What are two techniques for avoiding or reducing inadvertent duplication?
Answer: Normalise the data and don't store what can be calculated.
PragC2Q7: What should be done if the DRY principle needs to be violated for performance reasons?
Answer: Ensure the violation is not exposed to the outside world by keeping it contained with in the class.
PragC2Q8: How do you avoid impatient duplication?
Answer: Discipline.
PragC2Q9: What adage relates to impatient duplication?
Answer:
“Short cuts make for long delays.”
Article 1: Design Principles and Design Patterns, Robert C. Martin
Art1P2Q1: What are the four primary symptoms of rotting design?
Answer:
- Rigidity (changes cascade)
- Fragility (breaks whenever it is changed)
- Immobility (inability to reuse software from other projects or part of the system)
- Viscosity (easier for the engineers to break the design with hacks rather than preserve it)
Art1P4Q1: What kind of requirements changes cause design rot?
Answer: Changes that introduce new and unplanned for dependencies.
Art1P4Q2: What technique can be used to prevent degradation of the dependency architecture?
Answer: Dependency firewalls.
IT Questions
ITQ3: What is the Unicode number for the snowman character?
<html> <span style=“font-size:60px”>☃<span> </html>
Answer: 2603 (Hex).