版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
小米没有进行笔试直接发起了面试。
整体感觉还挺好的,面试官很和善。
- 上来先是自我介绍
- 问项目
- 问在Android开发中遇到的问题及解决方案
- 对工作地的选择
- 问未来希望的发展方向,上层应用还是偏 framework 的(介绍了下工作地等)
- finally final finalize 的区别 讲一下
- final可以修饰什么 作用等
- JVM中 堆和栈的区别
- 堆和栈的内存可见性
- Java 中的四种引用方式,强引用弱引用等
- Android activity的四种启动模式
- 事件分发机制
- 还有些基础知识不记得了
- 手撕代码1 实现一个单链表的反转,自定义链表类型,不要使用递归(自己定义输入,并进行输出检测,也就是自己先生成一个链表再去翻转)
- 手撕代码2 实现atoi函数,输入string,输出int(字符串可能存在字符,可能超过int最大长度,要求判断特殊情况。)
- 反问环节
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Stack <Node> stack = new Stack<>();//使用栈
int temp = in.nextInt();
Node head = new Node(temp);
Node head1 = head;//保存头结点
for(int i = 1 ; i < n; i++ ){
int temp1 = in.nextInt();
Node temp2 = new Node(temp1);
head1.next = temp2;
head1 = head1.next;
}//完成初始链表建立
in.close();
for(int i = 0 ; i < n;i++ ){
stack.push(head);
head = head.next;
}//插入栈中
Node out = new Node(100);
Node out1 = out;
while(!stack.isEmpty()){
out.next = stack.pop();
out = out.next;
}//弹栈,建立输出链表
out.next =null;
out1 = out1.next;
for(int i = 0 ; i < n;i++ ){
System.out.println(out1.val);
out1 = out1.next;
}//打印
}
static class Node {//节点类
int val;
Node next;
public Node(int val){
this.val = val;
}
}
//字符串转成int
public static int atoi(String string){
char ato = string.charAt(0);//判断是不是负数
int bigger0 = 1;
if(ato == '-')
bigger0 = -1;
long length = string.length();
if(length > 11){ //int max=2147483647 int min=-2147483648 算上符号位最长11位
System.out.println("超过int型最大长度");
return -1;
}
int value = 0;
int time = 0;
if(bigger0 == -1)
time = 1;
while(time <= length - 1){
if(string.charAt(time)> '9' ||string.charAt(time)<'0'){
System.out.println("含有非数字字符");
return -1;
}else{
value = (string.charAt(time)-'0') + 10 * vaule;
//这个地方这么写肯定情况是不全的,我还没写完,面试官说时间差不多,没在继续考虑
if(vaule > Integer.max() / 10){
if(length - 1 -time > 1){
System.out.println("超过int型最大值");
return -1;
}
}
}
time++;
}
return vaule * bigger0;
}
}
第一个翻转链表写完通过了,我说还可以用头插法,只不过感觉栈简单一点,他说其实是希望我用头插法写的,说他看一下代码,然后就让我写第二题,第二题最后没有输入用例去调试,只是写了个函数。写的不全面。