A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 就业高冷派 黑马粉丝团   /  2016-12-14 14:17  /  2682 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 就业高冷派 于 2016-12-14 14:22 编辑

主动出击才是王道
------Android应聘必备技能

2016年西安的冬天异常暖和,趁着好天气,就出去参加面试,给学生们探探路摸摸水,看看西安Android市场是否真如大家所臆想的那样,诸如”年底公司不招人”,”Android岗位难找工作”,”Android被Html5所代替”等.

面试前传:

我在智联和拉勾上简单的投了不到十份的简历,过了一周时间就收到了三家公司的面试邀请.其中有一家是中软的面试邀请,因我的简历是用的艺名,中软做的是华为外包的项目,面试要刷身份证才能进华为入园区,所以未能入园见到面试官,不过大家可以看看年底面试的场面仍然很火热.(另外提醒各位学生们,因为华为对人才的要求是必须统招本科以上,所以,如果你是大专学历请自觉绕行中软的面试邀请)

小编我一怒之下直接翻开手机拉勾网,第一眼就看到一个叫小喵科技的公司就在附近位置,所以我就在他们的官网上搜索了一下,看看他们官网有没有相关人才招聘信息,或许能获取到面试电话,结果翻到他们官网的最后有两个微信号,管他三七二十一,先加了再说,于是就发了信息过去跟人家打招呼说我是来面试的.结果半天没回复我,小编我就直接杀到他们公司的那座大楼,可是拉勾上的地址没有写具体是几楼,这座大楼里的都是玻璃门,要按指纹才能进入,等半天也没人进出,这下可把小编愁死了,正在这时,微信那个号码回复了

于是,就有了参加面试的机会.以下是面试过程,前方高能,各位车友请注意,老司机要加速过关了:

Q:直接上来就给了一个mac本让做一道机试题,题目具体记不清了,大概意思是访问Url:”https://api.github.com/search/users?q=用户名”,获取该用户的个人信息,要求用户名是动态输入,结果是动态展示;然后访问https://api.github.com/users/用户名/repos获取该用户提交的所有项目,从而分析该用户擅长使用哪种编程语言.

A:我们平时用的是HttpUtils作为网络访问框架,不知道你的编程环境有没有该第三方插件


Q:你可以先给我讲一下你的思路

A:,好吧.题目的第一问就是访问一个url,看给的形式是一个get请求,参数是键值对的形式以问号连接在url后面,首先,我需要在界面上写一个EditText控件并设置id,通过id获取到该控件的对象,就可以给该控件对象添加文字改变的监听(addTextChangedListener), 这个接口有三个回调方法,分别是文本被改变前,文本被改变,文本改变后,我们可以在文本改变后去拿到用户输入的文本并访问网络获取json数据.并对json进行解析,将数据存入到javabean对象中.然后通过ListView展示给用户,当文本被再次改变,就需要不断的刷新ListView就可以动态的显示搜索到的结果;

另外,我们可以访问第二个Url,返回数据仍然是一个json格式,根据分析大概是用户所提交的所有项目信息,其中有一个字段是language应该是该项目用到的编程语言,我们就可以把每个项目中的语言存入到Map集合中,(key)是该语言的字符串,(value)是该语言在遍历过程中出现的次数,通过判断集合中是否包含该key,未包含就将value设置为1,包含就将集合中的value取出加1后再put进去,然后对Map集合中的元素按照值从小到大排序,最终取出最后一个键即为该用户最擅长使用的编程语言.


Q:很好,那你按照你的思路写出代码吧,我这里有已经模拟好的数据,你来遍历一下.

A:,我看看.(就这样在面试官审视的眼神下我上手就干)

具体代码如下:
:有一个Repojavabean自己补全哈
public class Test {
    public static void main(String[] args) {
        ArrayList<Repo> repos = new ArrayList<>();
        repos.add(new Repo("Tom", "Java"));
        repos.add(new Repo("Tom", "C"));
        repos.add(new Repo("Tom", "JavaScript"));
        repos.add(new Repo("Tom", "PHP"));
        repos.add(new Repo("Tom", "PHP"));
        repos.add(new Repo("Tom", "Java"));
        repos.add(new Repo("Tom", "PHP"));
        String result = countFavor(repos);
        System.out.println(result);
    }

    private static String countFavor(ArrayList<Repo> repos) {
        HashMap<String, String> map = new HashMap<>();
        for (Repo repo : repos) {
            if (map.containsKey(repo.language)) {
                int count = Integer.valueOf(s);
                map.put(repo.language, String.valueOf(++count));
            } else {
                map.put(repo.language, "1");
            }
        }
        System.out.println(map);
        Map<String, String> sortMap = sortByValue(map);
        System.out.println(sortMap);
        return getLastKey(sortMap);
    }

    // 获取最后一个key
    private static String getLastKey(Map<String, String> sortMap) {
        int i = 0;
        for (Map.Entry entry : sortMap.entrySet()) {

            String key = (String) entry.getKey();
            if (i == (sortMap.size() - 1)) {
                return key;
            }
            i = i + 1;
        }
        return null;
    }

    //map集合按照值从小到大排序
    //参考博客:http://blog.csdn.net/wangtao6791842/article/details/12904467
   没错,就是当着面试官的面上网搜索到该方法
    public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(
            Map<K, V> map) {
        List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(
                map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
            public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
                return (o1.getValue()).compareTo(o2.getValue());
            }
        });
        Map<K, V> result = new LinkedHashMap<K, V>();
        for (Map.Entry<K, V> entry : list) {
            result.put(entry.getKey(), entry.getValue());
        }
        return result;
    }
}

Q:恩,很不错,上次来机试的,半天集合的遍历都没写出来……最后就让他回去了.看来你的java水平很不错啊!我技术这边没啥问题,我们经理最近出差,等周一回来通知你跟我们老板具体聊.你期望薪资多少?

A:哦,那好吧.我期望11k,就我的水平你们公司能给多少呢?



Q:嗯,这个你还是具体跟我们老板谈吧.

A:看你们办公环境挺好,你们平时工作加班多吗?


Q:我们平时不加班,一般项目上线前会加班,但只要加班就会有加班费.你还有啥问题吗?

A:呵呵,没有了.我就随便问问.我们之前公司在项目上线前也会加班,但会根据加班时间转换成调休时间.


Q:行,那你先回去,周一具体你跟老板聊.


面试后传:

周一上午大概十点多接到一个电话说是小喵科技人事,让我去参加复试,于是我傲娇的说,我找到一个12k的工作,已经上班了,不好意思!(再去面,我疯了,简历名字都是假的,被当面戳穿会不会被吊打啊!)


3 个回复

倒序浏览
回复 使用道具 举报
学校妹子是不是少
回复 使用道具 举报
wujianming 来自手机 注册黑马 2016-12-16 22:51:58
板凳
强强强强强!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马