先介绍下背景:我是非科班985本硕出身,目前语言水平大概java初级、c入门。虾皮面试面了快2小时(感谢有耐心的面试官小姐姐🤣);面试官是个超温柔加有耐心的小姐姐,全程试图引导我。自打4月拿了个实习offer后,我就没咋学技术;一个月没刷题。所以面试情况很不理想😂,面试base深圳。
面试过程:
1 自我介绍。
2 为什么选择ios?问完后,面试官强调虾皮这边主要看应届生基础(因为本人技术学习以后端与java为主),然后后面的问题真的很基础,但是很广。很水很水的我,果然暴露了。
3 开始正式面试(因为水平有限,答案大家自行搜索吧,不误导大家了):
计算机组成:计算机五大组成。
操作系统:
a 什么是进程?进程间通信方式。
b 进程和线程区别?
c 进程和可执行文件有啥区别?可执行文件有了解过吗?
d 栈区和堆区有啥区别?
e 页面置换算法了解过吗?能展开说说一种吗?这部分我说了下LRU实现(Hashmap+List)
f 链表这一块:如果有一个单链表,有什么方法能实现O(1)时间复杂度的任意删除吗?(我知道肯定有,但不会啊。。。。)
编程基础:
a 看你写了会C语言,能谈谈C语言编译过程吗?
b 你接触的语言哪些是面向对象的,哪些不是?
c 面向对象的特点?
d 面向对象的优缺点?
计算机网络:
a Http和Socket有啥不同?
b TCP三次握手?可以两次吗?
c http请求头数据?
数据库:
a 了解数据库吗?会哪些。
b 索引是什么?什么情况适合、什么情况不适合用索引。
c 数据库4大特性;什么是原子性?
面到这时候。大概过了30分钟,面试官小姐姐让我选择自己最擅长的方面,再选几个问题问我。我自信的说是算法(然后就是喜闻乐见的翻车了。。。)
a 动态规划算法使用有啥限制条件?
b 给个二叉树中序、后序遍历;求前序遍历(前,中后序;根左右 左根右什么的,傻傻分不清,问完面试官,画了半天图,给了个错误答案)
给你个自我表现的机会,我刚刚问的不一定全,你自己来说。(这一块我字节实习面时候也碰到了,两次都没把握好这个机会,不知道说啥好。)
那没什么要说的,来个算法题吧。算法题这块,我说下思路,给大家参考。手太生了,没写出来。
题目:输入为一个非负整数n;输出小于等于n的非负整数中二进制表达中含连续1的数的个数。 例如:input:5 output:1(0 0 1 1 2 10 3 11 4 100 5 101) 思路:1 先储存位数为i(1-32)的整数中,满足条件的数的个数(按位dp)。储存在一个数组map[33]中。 2 对输入n;求出n的二进制位数k; if(n&(1<<k-1)==1<<k-1) f(n)=map[k-1]+f(n-(1<<k)-(1<<k-1)) +n-(1<<k)-(1<<k-1); else f(n)=map[k-1]+f(n-(1<<k);自己表现啥样,心里有数,基本就是等感谢信了。秋招第一面算是给自己提了个醒,学习还是一刻不容放松啊🤣🤣🤣。
最后,想说虾皮面试体验着实不错,面试官全程很有耐心,也愿意引导你、让你展现自己的水平。给虾皮点个赞。
全部评论
(4) 回帖