Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
shrughes
Oct 11, 2008

(call/cc call/cc)

Cicero posted:

Here's a super simple example:
code:
public void doSomething(int[] arr)
{
    int n = arr.length;
    for (int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            // some simple array operation happens here
        }
    }
}
What's the Big-O complexity/running time of the above method?
It's O(n^3), right?

Adbot
ADBOT LOVES YOU

shrughes
Oct 11, 2008

(call/cc call/cc)

Cicero posted:

No. As I posted in the spoilered answer, it's O(n^2). Why do you think it's O(n^3)?

Because there exists a number x such for n > 0, for all inputs of length n, the running time is less than or equal to x*n^3?

shrughes
Oct 11, 2008

(call/cc call/cc)

Cicero posted:

You have me second-guessing myself here but I really don't see where you're coming from.

I am simply sperging about the meaning of big O notation. Any function that is O(n^2) is also O(n^3).

shrughes
Oct 11, 2008

(call/cc call/cc)

kimbo305 posted:

Also, I don't think the run-time stuff is that rigorous, but they sure try to make it seem that way in class.

It's rigorous, assuming you do it rigorously. What parts do you find particularly hand-wavey?

shrughes
Oct 11, 2008

(call/cc call/cc)

A MIRACLE posted:

Woohoo! I've got a followup interview monday for my first dev job. I want to review before, any pointers on what to study, or have a good link for entry-level dev interview tips? I'm primarily versed in C++ if that helps. Thanks!

There's nothing you could possibly review. It isn't going to change the interviewer's ability to see whether you're a good developer or not.

Edit: Uh, well, you might want to make sure that if they ask you about a project you've worked on in the past, that you can give a good description of what you did.

Edit: What the gently caress is the 7-layer model? What kind of person would care whether you know about some obscure stuff like that?

Edit: Seriously, if anybody walks into the interview room and asks you what ethernet is you tell him to gently caress off, what kind of bullshit question is that, all you're paid to do is send/recv bytes on a TCP stream and maybe fiddle with NODELAY. Then ask him if he feels smug knowing trivia most people don't deal with.

shrughes fucked around with this message at 13:31 on Apr 23, 2011

shrughes
Oct 11, 2008

(call/cc call/cc)

2banks1swap.avi posted:

I just can't realize why so many people are so full of themselves they don't realize that many things completely out of their control could take it all away. If you're on the internet, you have to have been exposed to the statistics. I guess they don't comprehend them as it pertains to their working lives.

You should try being a supergenius. Statistics don't apply to supergeniuses. Supergeniuses don't have any problems finding jobs as a software developer because employers are very thirsty for people who can actually write real code. Which is something supergeniuses can do. I'm a supergenius and I can get any job at any employer I like, and nothing can stop that except for physical brain damage.

Oh wait, did I say supergenius? Naw, I actually meant person who can actually write real code.

2banks1swap.avi posted:

Don't even get me started on how many HR departments filter out people with 6 months or more of unemployment, calling them "unemployable" and leaving them to their fate.

What about the HR departments that don't filter out people based on this? I got a job after 11 months being non-employed as soon as I started looking for a job (if you don't count the week where I learned the hard way not to sperg out on cover letters). My first two jobs after college (my only two jobs after college) both came from sending a resume out from the blue.

Here's how I got both of them, and here's how you can, TOO!

1. Send a resume that shows evidence that you can actually write real code. *

2. The dude reading the resumes, some engineering manager somewhere, is like, "Holy poo poo, here's a guy who can actually write real code!"

3. They give you an interview and want to hire you because holy mother of gently caress you're an actual programmer.

There is no nepotism except (theoretically) maybe in lame-rear end companies you wouldn't want to work for anyway. I have never seen nepotism in action in the job hunting situation (except when I got my first summer job at the company where my mom worked at, and the next summer job with the LLC of this dude whose dad my dad played golf with, and the summer research thing with professors I knew).


* Protip: write some FOSS.

shrughes
Oct 11, 2008

(call/cc call/cc)

Wizbang posted:

So uh I have an interview in Pittsburgh next week and I'm totally freaked out about how to dress. Here in Portland I've been interviewing in clean jeans and a nice shirt, no tie...but that's Portland. The East coast is uppertight about dress, right? I have a nice suit, but it'll be a big hassle on the plane and I'd rather not worry about it if I don't have to...and it's almost as bad to be overdressed as underdressed, right?

No no no no no no no no no. You're not applying at a bank, right? This is the software industry we're talking about. Don't wear a suit, don't wear a tie. Clean jeans and a nice shirt is right.

Edit: the default is not to wear a suit. Seriously no job applicant wears suits except people in their forties. And the ones who wear suits are always retarded.

shrughes fucked around with this message at 04:15 on May 18, 2011

shrughes
Oct 11, 2008

(call/cc call/cc)

Orzo posted:

Every single person I've interviewed at my current job has worn a suit, young or old. For reference, Chicago loop, banking software company. Clearly based on what you guys are saying, it varies from region to region.

You said the magic word: Banking.

shrughes
Oct 11, 2008

(call/cc call/cc)

Aredna posted:

Don't Wear Suit, Underdressed: May be deciding factor in not getting the job

More like,

Don't Wear Suit, Underdressed: The employer sucks, good thing you dodged a bullet there.

shrughes
Oct 11, 2008

(call/cc call/cc)
I have a suit, the last time I wore it was at a funeral. Are you going to remind me of my relative's death just to get a job?

shrughes
Oct 11, 2008

(call/cc call/cc)

Theler posted:

When is the right time for a future CS grad to start sending out resumes? For example if I was graduating in December and looking to start a job in January would applying for jobs during August/September be considered too early?

I graduated in December and started looking in January.

shrughes
Oct 11, 2008

(call/cc call/cc)

TasteMyHouse posted:

which january -- the one before you graduated, or the one after?

IIRC didn't you have a grad school app that went through late or was that someone else?

That wasn't me, I didn't apply to grad school. The one after.

shrughes
Oct 11, 2008

(call/cc call/cc)

His Neutralness posted:

I just graduated and I made the mistake of going to college in a city that has somewhere in there range of 2-3 software companies, and also I don't really want to live here regardless. Are many companies, besides extremely large one's like Google, willing to fly people out for interviews? I can't imagine many would for entry level positions. Would I be better off just moving to somewhere with jobs and then looking?

One option: get a shitbag recruiter to schedule your interviews and get them done in one trip.

shrughes
Oct 11, 2008

(call/cc call/cc)

opposable thumbs.db posted:

Any thoughts on whether it would be better to take the non-CS job, and try to spend the rest of the summer working on personal projects, or take the internship for experience? I don't really have any idea of which would be better for my prospects long-term.

What's the non-CS job? It depends.

shrughes
Oct 11, 2008

(call/cc call/cc)

His Neutralness posted:

Is there any good way to find a non-shitbag recruiter? Actually, how do I go about finding a recruiter at all? I've been called by a couple recruiters before but I didn't realize I could have one schedule multiple interviews for me.

My experiences were much like magic_toaster's. I just replied to a Craigslist ad that smelled nice. It was put up by a recruiter, he had this big obvious used-car-salesmaney vibe, and he got me interviews at a bunch of interesting places in Boston and lined them up on the same weekend. He or the company he worked for specialized in startups.

shrughes
Oct 11, 2008

(call/cc call/cc)

A Jew in Manhattan posted:

So from what I've gathered from this thread the best course of action is to specifically list lack of certification on your CV for developers, list them for HR (put a big note above the section that says, "FOR HR'S EYES ONLY!"), and to show up to interviews in casual Hawaiian themed business suits.

Am I on the right track to getting a developer job?

You should also avoid mentioning weird ivory tower languages such as Haskell, F#, or Erlang.

shrughes
Oct 11, 2008

(call/cc call/cc)

Calcaneus posted:

So I'm a Computer Science undergrad student, is ABET accreditation a big deal for CS? Because apparently my school's program doesn't have it.

Doing a quick search on http://www.abet.org/AccredProgramSearch/AccreditationSearch.aspx shows that my undergrad CS program is not ABET accredited, nor is CMU's, I don't know much about it but it seems like more of an engineering program thing than a CS program thing. For example CMU has it for its "Electrical and Computer Engineering" program, but not for computer science. It took a while to find a school that had a program named "Computer Science" accredited by ABET, the first I found was by randomly clicking on Clemson.

shrughes fucked around with this message at 16:51 on Jun 26, 2011

shrughes
Oct 11, 2008

(call/cc call/cc)

HondaCivet posted:

Please excuse me if I made this all up but I swear that a few times in the thread, people have posted sites that give you little coding problems to work though for practice. Assuming that these sites really exist could someone give me a couple of links?

Project Euler

Google Code Jam Practice Problems

shrughes
Oct 11, 2008

(call/cc call/cc)

GidgetNomates posted:

blah web programming blah my career what should i do

Trying to familiarize yourself with as many languages as possible is not a good idea because you won't learn much, you'll have useless surface knowledge of a whole bunch of things that would take a few days to pick up if you needed to do a real project in such a language.

Trying to familiarize yourself with one particular language and maybe one particular database engine is not a good idea, because that information will go down the tubes if you end up getting a job where you deal with some other language or technology. Also, what you do will be within a personal echo chamber, which is inefficient compared to the amount of learning you do at your first job.

What won't go down the tubes, however, is general CS knowledge, and the general software design experience that you get from working on projects. Plus there's the benefit of having some actual code you have written being something you can point to on your resume. So if you want to engage in targeted self-improvement, I suggest going for something interesting and challenging that involves writing useful code and is something you like working on. Do something that requires learning something new, where that something is not an API but rather a "how to do things" sort of thing that is independent of an API. For example (this is just an example, not a suggestion), making a 3D game doesn't benefit you by teaching you about OpenGL, it benefits you by giving you experience with the software design situations you get when doing stuff that involves 3D graphics. (Of course there is still the benefit of some experience with OpenGL, but that's not the main thing.) What I am basically saying is, you shouldn't spend the next 1.5 years making database-backed websites over and over again.

Also, don't worry so much about interviews. They're not something you can really study for, and they're not actually hard. You don't have problems reversing a string, do you? How about printing the elements of a tree, in order? You're familiar with trees, right, since that's what web programmers deal with all the time, right? People hiring you out of college aren't going to expect deep answers about software engineering, either.

shrughes
Oct 11, 2008

(call/cc call/cc)

Holy John posted:

I'm kind of in a similar situation. I'm about to start a CS degree in September. I have about three years of experience from taking a few high school classes and messing around with Java, Python, and C/C++, but I'm not very confident with my abilities. I want to really get ahead of the pack and make the most out of college so that I can be prepared for internships and research positions early on. Do you guys have any recommendations for specific skills I should learn or opportunities I should pursue?

Whether you suck or not at your first CS classes will be a function of your innate intelligence and whether you go to class and do homework, not a function of any attempts at "preparation" you do before then.

shrughes
Oct 11, 2008

(call/cc call/cc)

Ensign Expendable posted:

What the hell? Why would a company not hire unemployed people?

Because P(X is a good employee| X is employed) is significantly greater than P(X is a good employee | X is unemployed) which is close to zero.

shrughes
Oct 11, 2008

(call/cc call/cc)

Mike1o1 posted:

I've never seen that listed in a job ad anywhere. The most I've seen is asking for local candidates only, and/or that no sponsorships are available. But then again I haven't really looked seriously since about 3-4 weeks ago.

I haven't seen it either but I don't think it's that common, or as common, in programmer job ads. The "applicant haz job" bit is irrelevant when put next to "this person has actual code on github that doesn't suck" or the "he mentioned Haskell on his resume" or other more useful indicators.

shrughes
Oct 11, 2008

(call/cc call/cc)

MachinTrucChose posted:

I never thought this was actually a thing.

Yeah, I am for real, this is a thing. See http://www.google.com/search?q=hiring+unemployed

shrughes
Oct 11, 2008

(call/cc call/cc)

baquerd posted:

Generally they're moving to another job if they're doing that, or alternatively they are financially retarded.

Or they just don't feel like working.

shrughes
Oct 11, 2008

(call/cc call/cc)

Orzo posted:

I wouldn't expect anyone who has had a real job for a number of years to remember that. If they were straight out of school, maybe.

There are, however, real jobs where you do need to be familiar with that kind of stuff in your day-to-day work.

shrughes
Oct 11, 2008

(call/cc call/cc)

Orzo posted:

I wouldn't expect anyone who has had a real job for a number of years to remember that. If they were straight out of school, maybe.

I'd consider it a severe mark against a person even after years away from school not to know what quick sort and merge sort are, if they had once known. It means they didn't find sorting algorithms interesting enough, or data structures and algorithms in general interesting enough, for them to remember anything about them. They're the quintessential O(n log n) sorting algorithms! If a person can't remember how they work, what can they remember? What a vector is? How to write foreach loop? How link list get insert? Do these people just have a table of knowledge mapping operations of the Java standard library to their big O running times?

Edit: Of course there are plenty of good developers who don't know this who majored in physics or whatever.

shrughes
Oct 11, 2008

(call/cc call/cc)
don't be a sociopath, Samuelllllll

shrughes fucked around with this message at 23:21 on Aug 20, 2011

shrughes
Oct 11, 2008

(call/cc call/cc)
O notation describes functions, not algorithms, and if you want to talk about actual running time, the average running time of quicksort on inputs of size n (having some sane distribution of values) is O(n * (log n)^2).

TasteMyHouse posted:

I was being pedantic, but since (by definition) big O notation is a specification of an upper-bound on the growth rate, if you don't specifically say "in the average case" you're automatically referring to worst case performance.

O notation is used to describe whatever function people have in mind. If somebody says quicksort is O(n log n) then obviously they're referring to the function describing the average number of comparisons it would take to sort some distribution of input values. The fact that people use O notation this way is proof that your definition of how big O notation should be used is just a fantasy.

shrughes
Oct 11, 2008

(call/cc call/cc)

Eggnogium posted:

Second, you're talking about the worst case running time over all possible inputs.

But that's not what people are talking about. Even people who say they're talking about worst case running time often are not actually talking about worst case running time.

Sometimes they're talking about the number of times a certain function is called, instead of the running time. Sometimes they're talking about the worst case amortized running time. Sometimes people simply have no choice but to talk about expected running time because the algorithm's behavior is randomized.

For example, you can't talk about worst case running time over all possible arrays of n elements, because there's no upper bound on the running time. Yet people say that quicksort takes O(f(n)) worst case running time for some choice of f.

For example, people say all the time that a vector's push_back operation takes constant time, but they really mean it takes constant time on average, or amortized over a bunch of operations.

For example, people assume that picking a random number uniformly in the set {0, 1, 2} takes constant time, but really it takes expected constant time and it could never return.

For example, people will say that quicksort will call the comparison function O(n log n) times if you pick the median as a pivot. Actually, most quicksorts will still take O(n^2) comparisons in the worst case with a median pivot. It's just a case that people didn't include in the set of cases they were talking about.

For example, if somebody says that hash tables are better than BSTs because they take O(1) time, and then you correct them and say "NO, HASH TABLES TAKE O(n) TIME IN THE WORST CASE", you're a worthless rear end in a top hat.

shrughes
Oct 11, 2008

(call/cc call/cc)

TasteMyHouse posted:

I'm with you for most of what you said but if you're talking to someone who doesn't already know the time complexity of push_back and you don't say constant AMORTIZED time then you're the worthless rear end in a top hat.

That's not true. Stop saying wrong things.

shrughes
Oct 11, 2008

(call/cc call/cc)

Chokes McGee posted:

Yeah, that sounds fair, just seems sort of... passive aggressive. They call me at a job I'm happy with specifically to give me the hard sell, then tell me my fix is under "increased scrutiny" and I'm one of eight candidates in consideration. I'm kind of getting mixed signals here!

You had the awesomest solution to the problem. You might be under "increased scrutiny" but that just means they're going to pay more attention to you, that you'll stand out more, and that they'll be more likely to hire you.

shrughes
Oct 11, 2008

(call/cc call/cc)

iam posted:

For example, I'm comfortable with:
...
- Concurrency

That disqualifies you right there, nobody should be comfortable with concurrency.

shrughes
Oct 11, 2008

(call/cc call/cc)

jaffyjaffy posted:

I have a question regarding undergrad degrees.

Read the degree requirements! Read the course descriptions!

How can you say the site is vague when it lists exactly what courses you need to take for the major?

I would go into the CSE program. The only reason not to is if you're too dumb to get a real college degree.

jaffyjaffy posted:

Realistically, I am curious as to if any of you have heard of, or had any applicants from an engineering technology program that focuses on Computer Science. Would you prefer the math-intensive one over the other? Would you prefer a student with a 3.5 in a CSET program over someone with a 3.0 in a CSE program? Would you even care and just treat both as a 4-year CS degree considering you would probably have no idea as to how my school is and how good it's programs are?

I would prefer a student who doesn't suck at programming, and I don't really care about his GPA. I looked at the programs on the website and I'd definitely expect a CSE person to be a better, more interesting candidate. The first programming class in CSET is "GUI Programming", and now I want to do violent things to people.

But yes I'd prefer somebody who got a 3.0 in CSE to somebody who got a 4.0 in CSET, not that that fact gets any consideration after the resume screening phase.

jaffyjaffy posted:

I am really worried about this. While I know I'd get a better GPA in the CSET program, I don't want to just take the path of least resistance and screw myself over 4ish years from now. I just want to get a job that pays well and at a company where I can do something that interests me.

There's no way you'll screw yourself (unless you go into game programming) but you can be sure that nobody will be impressed by a GPA that is padded by the crap that's in the CSET program.

I really think the CSET program is targeted towards people who should not be getting a college degree in the first place.

Keep in mind that I'm a masochist on other people's behalf when it comes to recommending their educational path, and I'm not really capable of commiserating with a distaste for classes that have math.

But honestly the CSE program I see there is not some kind of torturous gauntlet set up to make you hate your life and expose how much you allegedly suck at math. You won't suck at math hard enough for it to be difficult. You might suck at programming though, that's the real danger.

Edit: To be clear, I would be happy for you if you got a CSE program and got a 3.5 GPA, or a 3.0 GPA, and I would be happy if you went into CSE but failed out and committed suicide because you were one of the many starry eyed would-be game programmers or security whatchyamazits who actually suck at programming, too. I would be unhappy if you went into the CSET program no matter how well you did. My happiness function is not the same as your happiness function.

shrughes fucked around with this message at 06:54 on Aug 23, 2011

shrughes
Oct 11, 2008

(call/cc call/cc)

MachinTrucChose posted:

A: Did not give me a technical test
B: Gave me a basic C++ test, nothing more

Oh my lord don't work for company A.

But don't work for company B, either, if you're going to spend 2 hours commuting (unless it's by train). It will eat into your soul.

shrughes
Oct 11, 2008

(call/cc call/cc)

lazarenth posted:

I just got my first actual job in software after graduation about 3 or 4 weeks ago. In the next couple of weeks I will be helping my manager interview for our first intern. I am cool with this, the only problem I have is I have no idea what to ask.

Ask him to write a function that takes a binary tree and return true if and only if it is a binary search tree.

Have him login to some etherpad clone like http://typewith.me/ and actually type out the code. It's best to give him the link over email.

This is so much more useful than just talking.

shrughes
Oct 11, 2008

(call/cc call/cc)
Those are horrible questions, you're basically asking if they've seen a hash table before or not and dealt with that sort of thing.

shrughes
Oct 11, 2008

(call/cc call/cc)
Hmm, I didn't know that. We only use it as a warm-up question.

shrughes
Oct 11, 2008

(call/cc call/cc)

Orzo posted:

What are some of your other questions, if you're allowed to disclose? I'm always looking for some good ones to add to our repertoire.

Write a function that creates the mirror image of a binary tree.

Write a program that computes the number of tic-tac-toe games.

An array of N elements has the property that if you sort it, each element is within K units of its final position in the sorted array. That is, the position of the J'th smallest element of the array (for 0 <= J < N) is in the interval [J-K, J+K]. Figure out a sorting algorithm that is more efficient because it exploits this property.

Given a 2D array of zeros and ones, find the largest square of ones.

Two people are on a boat. Fred Lowenol falls off. Who is left?

You want to implement the locking of intervals of an array. Think of how to do it.

Invent an algorithm for finding the area of a union of rectangles that have vertical and horizontal edges. (This is excessively difficult.)

You have a B-tree and want to randomly select a key. You want to support randomly and uniformly selecting a key from the btree. You can modify the btree data structure if you want. How do you do it?

What if you can't modify the btree data structure?

shrughes
Oct 11, 2008

(call/cc call/cc)

Chasiubao posted:

I'd expect anyone going through a university CS program or with any experience to know what a hash table is and how it works at a rudimentary level. And if they don't, it's not like it's the only possible question to ask.

The problem is that it's just quizzing them on knowledge they already may have, not knowledge on something new. It's perfectly reasonable for a student to have breezed by hash tables and forgotten them or had them skipped entirely in his data structures class. It's also easy for somebody who's not good at programming to recite the knowledge he was told in class. This doesn't select very well for good programmers, not as well as questions that talk about something they haven't seen before.

Adbot
ADBOT LOVES YOU

shrughes
Oct 11, 2008

(call/cc call/cc)

baquerd posted:

Your questions remind me of programming contest questions. I guess if the job requires a lot of algorithm optimization work or something they might be valuable, but for example, I write front office financial software where large scale resource management skills, ability to quickly learn new frameworks, and domain knowledge are far more important than being able to generate solutions to academic problems in an interview.

We need that too, except we don't have any particular domain knowledge, unless you consider CS to be our domain. It sounds to me like it's pretty hard to test for large scale resource management skills and ability to quickly learn new frameworks in an interview. Also, you can only really differentiate between college students on their basic coding ability and body odors.

baquerd posted:

I like these since you're looking at concurrency and dynamic programming:

It turns out that the concurrency problem wasn't a very good question. There are plenty of worthy people who don't know enough about concurrency or who don't know about data structures for storing intervals (once we get to the read/write lock part of the question), and it's too easy for the interviewer to let the interviewee get by with a B.S. answer. We work on a highly concurrent system, but it's not like we expect everybody to really know about concurrency up front.

baquerd posted:

But these seem excessively academic and not very useful unless you're just testing to see how the programmer approaches the problem and you're not actually looking for an immediate correct answer:

On the tic-tac-toe question we expected the person to write code on the whiteboard, and we were really only interested if they could get an implementation without being retarded about it. That question's pretty good at identifying which people can't actually write code. That was for a former employer that worked on enterprisey software that dealt with what you might call large scale resource management.

The others are just general see-how-good-you-are-at-thinking-about-algorithms-and-data-structures questions, and yes, we're not looking for an immediate correct answer, but we do expect an answer eventually, on most problems. I don't see how a good interview question could ever expect an immediate answer, unless it's a warmup question.

Algorithms-and-data-structures is generally the skill we're selecting for. Randomly selecting a key from a btree (ideally without encoding new information in the btree structure) is a specific problem we've dealt with. The sorting question is one that anybody with a general CS background should be able to figure out. (Of course, I criticized the hash table related question, and this question is biased towards people more familiar with sorting algorithms, so it looks like I'm wrong about something.)

The rectangle union area problem is completely insane, only good for seeing how awesome an extremely awesome candidate can get, and the first half of the randomly-selecting-key-from-btree question attacks the same data structures abilities, without being completely insane, so I don't use it the union area problem anymore.

baquerd posted:

Here are the type of questions we'd ask:

I'm assuming you also have questions that involve them showing that they can write code instead of just talking about it.

Also, "What is your approach to learning how to use the API?" seems like a bad question to me, not that I've tried it. What is a "good answer" to this question and how does it mean the candidate is a better learner or better candidate than a "bad answer"?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply