赞
踩
2017年7月18日星期二早上10点钟左右,接到百度测试HR小姐姐的电话通知,并询问什么时候方便二面。经过短暂的协商,愉快的决定了下午进行面试,稍后就收到了短信和邮件的通知。
这回面试的应该是一位28岁左右的小哥哥(大约通过声音判读和面试过程判断出来)。不出所料,面试官还是先叫我自我介绍,这回自我介绍稍微比一面好了一些,估摸这介绍了20-30s吧,比第一次进步多了,很满足。
本来是打算面试完当天晚上写面试经历的,还是由于种种乱七八槽的事情耽误了,直到今天才有时间把这二面经历记录一下。时间久远,在这里笔者也只能凭印象来描述面试官的问题了。首先还是介绍了我自己参与的项目,不过面试官给我的感觉并不关注我参与了什么项目和在项目中负责的模块,应该只是想听一听我的一些简略行的描述。反正我就是巴拉巴拉的说了一边项目,很快就说完了。
接下来应该进入重头戏了。
1:
面试官:”谈一谈你对内存的看法泄露?“
我:“在说到内存泄露的这个问题时,我们其实首先要区分两个概念,一个是内存泄露,一个是内存溢出。我先说说内存溢出吧,Android手机系统未每一个APP提供了一个 运行内存值,这个值一般在200M-----300M之间,当然这个值不是限制在这个范围里面,可能大于300M,也可能小于200M,也可能在其中间,这个值就要看不同手机 厂商的规定了【通常我们把这个值称为阈值(不知”阀值“哈)】,(之后就是和面试官说图片,对象导致内存泄露的问题,当内存泄露超过这个阈值时就会变成内存溢 出,当然也说了其他情况导致内存溢出,反正区分这两个概念,既有千丝万缕的联系又有差别。Java 的 JVM 虚拟机肯定是少不了了【注意区分Android 的 Dalvik 虚 拟机】),反正就是巴拉巴拉的说完了”
2:
面试官:“你熟悉SQL语句吗?”
我:“一些简单的增删改查我还是比较熟练的。”
面试官:”你用过多表查询吗?“
我:”项目中没用怎么用过,可能是项目比较小的缘故。多表查询我目前记得一个笛卡尔乘积,因为数据库是大二学习的,有些知识忘记了【貌似是大三上学的】“
面试官:“那说说笛卡尔乘积吧。”
我:“我举个例子的,假如你有两张100条数据表格,如果使用笛卡尔成绩的话,新表格的行数为100*100=10000条,这样占用了大量内存(实际情况是我们需要的是新表 格的真子集)。”
面试官:”现在我有一张学生课程成绩表,你写一条SQL语句查询课程前五名的姓名。“
我:“selete "查询的属性列名称" from "表名" where "查询的条件"
面试官:”“查询的条件是什么?”
我:“先对表的排个序,即Order By 升序排列 ,选出前5条数据”
面试官:“假如有多门课程呢?”
我:“我想想,因为学生成绩表比较大,我们先把表进行拆分,再进行查询,这样的话性能我不能确定是好是坏。”
注:感觉这里还是再表里面加一些判定条件,当时整蒙圈了吧
面试官:“还有其他方法吗?”
我:“那我想到的还有hash索引。”
面试官:“说说你对hash的理解吧?”
我:“hash表里面的目录称为索引项,每个索引项有两个属性组成,一个是原始数据表格记录的地址ID,另一个属性是当前索引项的地址ID,再原始数据表里面进行数据的 增删改查对hash表的的改动不大。我们再建立hash表的时候可以把数据按序存储,这样提高了查询速度,至于删除数据我们只需要把原始数据表格记录的ID置为null 就可以了。”
3:
面试官:“Android是用java语言来开发的,你java学得怎么样?”
我:“应该还可以吧。”
面试官:“HashMap的key用哪个类型比较好呢?”
我:“这个问题我之前没关注过,但是要我选的的话我会选择 int 和 String 型。”
面试官:“为什么?”
我:“我认为应该和性能有关。”
面试官:“你看过HashMap的源代码吗?”
我:“这个我没有去研究过。”
关于HashMap的key的类型选int还是string,大家可以看这篇文章【谨慎使用String作为HashMap的Key】
关于HashMap的源码,大家可以看这篇文章【HashMap深度解析(一)】
4:
面试官:“Android 使用adb 打印日志的命令。?”
我:“我一边使用图形化界面,常用的是在代码里面System.out。Android adb 命令我不常用 。不过我对Ubuntu下的基本操作命令还比较熟悉”
面试官:“你会哪一些Ubuntu下的命令呢?”
我:“比如安装软件,卸载软件,打开编辑[vim]文件,移动拷贝文件等命令。”
面试官:“既然你对vim比较熟,那我就问问vim的一些操作命令吧,你知道vim 编辑文件状态下:选中文件一行的命令吗?“
我:”这个我不知道哦,我对vim的了解是只是打开文件和编辑文件和退出保存,您刚刚说的选中一行命令我没接触过。“
面试官:”编辑命令和退出保存命令是?“
我:”编辑命令的话首先要打开文件:vim "文件名" ,打开文件之后,进入编辑状态:i ,之后你就可以开始编辑文件了。退出保存是你首先要退出编辑状态:Esc ,之后 就按可以退出保存了: :wq 。【当时貌似说成了wq:】
面试官:“那不保存退出呢?
我:" :q! 。" 【当时貌似说成了 q!: 】
反正无所谓了,面试都面完了,能不能通过百度二面就看运气了。
二面我最深的感触就是面试官套路好深,针对你的回答他逮到什么就问什么,心好累。
最后上一个7月13号协助同学的一到阿里巴巴秋招内推在线测试编程题
直接说下思路吧:针对给的总时间,可以投3分的最大次数为【总时间/35】,可以投2分的总次数为【总时间/20】,投3分的总次数从最大减小到0,2分的次数肯定是从0到最大了。
直接上代码吧。【代码不是很完美,有些边界问题没考虑到,有心的读者请自行完善哈】
- package com.example.demo;
-
- import java.io.*;
- import java.util.*;
- import java.text.*;
- import java.math.*;
- import java.util.regex.*;
-
- public class Main {
-
- /** 请完成下面这个函数,实现题目要求的功能 **/
- /** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **/
- static String scoreStrategy(int leftTime) {
- int mixScore =0;
- int theTwo =0;
- int theThree =0;
- int two =0;
- int three = leftTime/35;
- mixScore = (three*3)-three/3*2+two*2-two/3;
- while(three>0){
- three = (leftTime-20*two)/35;
- int score = (three*3)-three/3*2+two*2-two/3;
- if(score>=mixScore){
- theTwo =two;
- theThree = three;
- mixScore =score;
- }
-
- two++;
- }
- two--;
- return theTwo+","+theThree;
-
-
- }
-
- public static void main(String[] args){
- Scanner in = new Scanner(System.in);
- String res;
-
- int _leftTime;
- _leftTime = Integer.parseInt(in.nextLine().trim());
-
- res = scoreStrategy(_leftTime);
- System.out.println(res);
- }
- }
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。