|
There is some ambiguous wording to be sure.
Distinct does not necessarily mean non-repeating, for example. I suspect the first question is to test whether the applicant thinks in sql terms.
Question 2 seems to be, as you point out in your answer, to be a trick question. You might ask: Determine the number of words in the string
A 6 pack does not necessarily refer to a stomach you #$%^$##$@#$ moron
Question 3 lacks context. If the output string is to be exactly like the input string, everything in the output string should be in their original relative location.
I agree with your assessment that management has been bamboozled by someone who enjoys ambiguity and quite possibly obtuseness.
Thanks,
Gary Monnier
IT Software Engineer CSM, CSPO
-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Craig Pelkie
Sent: Wednesday, June 29, 2016 1:11 PM
To: RPG400-L@xxxxxxxxxxxx
Subject: Interview question
A recruiter friend of mine sent me the following. My reply to him is included below. Any thoughts?
Craig Pelkie
--------------------------
Begin message sent to me:
I am working with a large IBM i client and they are giving my candidates a programming quiz that everyone is failing. I am wondering how difficult this quiz is or is there some trick that everyone is missing in reading the instruction. Could you please look at the instructions below and let me know your thoughts? Is this something everyone should know or is it really so difficult that only 5% of Developers would be able to get this?
Problem Solving Exercises
In the RPG programming language, write a method that modifies a string using
the following rules:
1. Each word in the input string is replaced with the following:
the first letter of the word, the count of distinct letters between the first and last letter, and the last letter of the word. For example, "Automotive" would be replaced by "A6e".
2. A "word" is defined as a sequence of alphabetic characters, delimited by any non-alphabetic characters.
3. Any non-alphabetic character in the input string should appear in the output string in its original relative location.
Thanks for your time.
--------------------------
Begin my reply:
I am sorry to say that you have fully and completely pressed my "contempt"
button with this question. That is, this is perhaps the worst "programming exercise" I have seen for RPG.
Immediate problems:
1. What constitutes a "letter", what constitutes a "non-alphabetic"
character? Is "a" and "A" the same letter, or different? I assume that a blank space is a "non-alphabetic" character. What about characters like "?", "!", "#", "$", "(", ")" and so on. Are those counted as "distinct letters"
or are they "non-alphabetic" characters? What about numerals 0-9? Is this limited to U.S. English EBCDIC, or do non-US English characters need to be taken into consideration? What about characters like ñ, does that count as "n" or a separate character?
2. What should be done for sequences of "alphabetic characters" that
are only one or two characters long? Examples: "I", "my", "37", "#$" how should those be dealt with?
3. For Item 3, give an example. What happens if the string is
"1no#yes", or something like that? Does the leading "1" count as alphabetic or non-alpha?
It looks like this client has a "genius" RPG programmer who has successfully managed to bamboozle the management with bulls..t. This is the type of question that you see in college programming courses.
Far more relevant would be things like this:
1. You are presented with a working RPG program that has a subroutine
of 2000 lines, with nested DO/IF constructs to a depth of 20 levels. There is a bug somewhere within the routine that you need to track down and fix.
Describe some techniques you would use to identify the bug, make a fix, and test that the fix does not cause additional errors.
2. Discuss the role of "refactoring" when working with existing code.
3. Demonstrate examples of how to define RPG procedures, including
procedures that return a single value (example: return an integer), procedures that return no value, and procedures that need to return more than one value. Demonstrate how to code procedure parameters, including a no-parameter procedure, procedure with one parameter, required vs. optional parameters.
4. You need to add a feature to a program where all 99 of the numeric
indicators (*IN01 - *IN99) have already been used. The program does not use subprocedures, it uses subroutines (so everything has global scope). The feature that you need to add will control a field on a display file, for which you will need to use at least 2 indicators to set display attribute values. Discuss how you would add the feature to the program. The program is written in RPG/400 and cannot be converted to ILE RPG.
5. For Q4, the program is written in ILE RPG. Discuss how to add the
feature, given the same constraints (all 99 indicators already in use).
(manager) at (client) had the best "interview" question I've encountered
yet: he sent me a small but non-trivial program that they needed a fix to, and had me work on it to create the fix. That was much more realistic than this misguided attempt to judge programming aptitude.
My suggested questions (1-5) above are actually based on code I've worked on at (client). I think it is far more realistic to test an RPG candidate based on their ability to deal with legacy code than to test for brain-twisters, just so the tester can gloat about their superior solution. I would hate to have to work on code that the person who came up with this created, it is probably full of "tricks" that are done more for personal self-aggrandizement rather than for clearly solving business problems.
Craig
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxx for any subscription related questions.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.