The Lounge is rated PG. If you're about to post something you wouldn't want your
kid sister to read then don't post it. No flame wars, no abusive conduct, no programming
questions and please don't post ads.
1. The lounge is for the CodeProject community to discuss things of interest to the community, and as a place for the whole community to participate. It is, first and foremost, a respectful meeting and discussion area for those wishing to discuss the life of a Software developer.
The #1 rule is: Be respectful of others, of the site, and of the community as a whole.
2. Technical discussions are welcome, but if you need specific programming question answered please use Quick Answers[^], or to discussion your programming problem in depth use the programming forums[^]. We encourage technical discussion, but this is a general discussion forum, not a programming Q&A forum. Posts will be moved or deleted if they fit better elsewhere.
4. No politics (including enviro-politics[^]), no sex, no religion. This is a community for software development. There are plenty of other sites that are far more appropriate for these discussions. Or if you must, use the Back Room[^] - but enter at your own risk.
5. Nothing Not Safe For Work, nothing you would not want your wife/husband, your girlfriend/boyfriend, your mother or your kid sister seeing on your screen. For those discussions where you wish to be a little more frank, use the Soapbox[^]
6. Any personal attacks, any spam, any advertising, any trolling, or any abuse of the rules will result in your account being removed.
7. Not everyone's first language is English. Be understanding.
Please respect the community and respect each other. We are of many cultures so remember that. Don't assume others understand you are joking, don't belittle anyone for taking offense or being thin skinned.
We are a community for software developers. Leave the egos at the door.
I am conducting a round of interviews this week, looking for a mid-level C# developer. I'm down-selecting some tech questions which are aimed at trying to filter out the "Yeah, I did a C# project a couple years ago" crowd from the "C# has been in my blood for at least a year or two" folks.
But selecting appropriate questions is always a challenge. (Just because something is obvious to me, doesn't mean every developer has encountered it. Every project is different and people get exposed to different things. I definitely want to avoid "language trivia.") So here is my first cut of questions. For those of you who are .NET devs, would you agree that somebody with a couple years of solid experience should be able to talk intelligently about most of these topics? (Not all of these are C#-specific.)
How do you inherit a class, and why might you want to?
What is the purpose of interfaces, and how are they helpful?
Why would you ever want to make a method private or protected?
When might you use a static class or method?
Can you explain what a lambda is, and why you might use one. (Or, alternatively, LINQ?)
Is there any way to return multiple values from a C# method?
Are you familiar with any "Design Patterns"? Can you name one or two that you have used?
Have you heard of the concept of "tight" or "loose coupling", and how does it effect code design?
Have you used a Unit Testing framework? If so, how did it (or unit testing in general) benefit your code, if at all?
[Note: we have decided not to make the candidates write or debug actual code in the interview, with the possible exception of FizzBuzz. But that is a topic for another thread.]
Not a bad set of questions at all - nothing too narrow in there.
If not getting them to write code, it might be a good idea to ask how they would approach writing something for a stated problem. In our last round of interviews (admittedly for a junior), I set what I considered to be a super-easy coding task. I thought at the time that it would filter out a couple of idiots but hardly any candidates even got close to it.
The task was simply to take an input of a sum of money and break it into the smallest number of notes and coins possible.
The first attempt was hilarious (pretty much if (amount == 52.31) print "some answer that added up to about £48") and they didn't get much better from there.
At one point I was so worried that I'd gone OTT that I asked my ageing mother. She worked out the algorithm in half a second.
The thing was, some of these guys could talk the talk (or at least quote Wikipedia) but couldn't code their way out of a wet paper-bag so I really would go with a test of that sort.
We're not here to do your homework. You won't learn anything by getting other people to write your code for you and it's unfair on your classmates.
Try attaching a debugger to your eyeballs and step through the code (assuming that you've actually bothered to write some) a line at a time. It's most likely an incorrect binding path for what it's worth.
Whenever you come in contact with them, directly or indirectly, just put your fingers into your ears and sing a little. Don't listen to any of their fantasies and just ignore them. Double experience points if you resist the urge to listen when they actually turn up and try to explain to us how to do our jobs.
Ignoring them is not taken as rude, as they have only a loose grasp of reality anyway.
"I don't know, extraterrestrial?" "You mean like from space?" "No, from Canada."
If software development were a circus, we would all be the clowns.