Why is 2, the ability to grind/memorize random problems, important for any company? I can't think of any company I've worked at, where that would be useful during my day to day work.
Maybe I'm in the minority, but I don't think the ability to memorize dozens of algorithms and then spit them out on demand is really that useful to most practicing software developers, nor is it a good signal about one's technical expertise.