8.10 腾讯iOS一面

wxg 视频号,base在广州。。tx会议面了30分钟

简历写的项目懒得写了,跟之前大差不差。

iOS相关:
  • strong vs weak, weak实现原理
  • 如何运行时给对象添加属性, 关联对象实现原理
  • runloop vs 线程, runloop mode的作用, autoreleasepool vs runloop释放时机etc
  • 图片如何从内存中被加载出来,渲染过程
  • app缓存体系
  • 假设feed流中有大量的图片,用户可能上下来回滑动,无法全部加载到内存中,如何设计缓存替换规则

基础知识:
  • TCP握手挥手
  • HTTP 3.0 2.0看我不(mei)想(bei)说(guo)就没问了。。。

算法:
求top k,老题了,说了快排和堆两种。问如果数据量特别大应该用哪种。。关键区别可能还是快排每次只能取到第k个,而前k都是无序的,堆可以保证前k都是有序的,在数据量和访问频率都很大的情况下应该还是堆好一些

总结:
面试官表示他们是做视频号的,暗示接下来会问一堆图像、缓存、内存管理相关的高难度问题,回去赶紧仔细研究一下orzorzorz
#面经##校招##腾讯##iOS工程师#
全部评论

相关推荐

03-29 15:49
门头沟学院 Java
第一题过桥,就是最长连续0子序列。import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        int n = in.nextInt();        int[] arr = new int[n];        for (int i = 0; i < n; i++) {            arr[i] = in.nextInt();        }        int juice = 0;        int curLength = 0;        for (int i = 0; i < n; i++) {            if (arr[i] == 0) {                // int cur = arr[i];                int j = i;                while (j < n && arr[j] == 0) {                    j++;                }                curLength = j - i;                juice = Math.max(juice, curLength);            }        }        juice+=1;        System.out.println(juice);    }}第二题分割数组,每一段满足位相加小于k,求最小段数。import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        int n = in.nextInt();   //长度        int k = in.nextInt();   //每段f函数值的上限        int[] arr = new int[n];        for (int i = 0; i < n; i++) {            arr[i] = in.nextInt();        }        int curSum = 0;        int pieces = 0;        for (int i = 0; i < n; i++) {            if (arr[i] > k) {                System.out.println(-1);                return;            }            curSum += arr[i];            if (curSum > k) {                curSum = arr[i];                pieces += 1;            } else {                continue;            }        }        pieces+=1;        System.out.println(pieces);    }}第三题1145子串,先算后缀和再求连续11子串。import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        int n = in.nextInt();        in.nextLine();        String str = in.nextLine();        long[] four_five = new long[n + 2];        int fiveCount = 0;        four_five[n + 1] = 0;        four_five[n] = 0;        for (int i = n - 1; i >= 0; i--) {            if (str.charAt(i) == '5') {                fiveCount += 1;            }            four_five[i] = four_five[i + 1];            if (str.charAt(i) == '4') {                four_five[i] += fiveCount;            }        }        long juice = 0;        for (int i = 0; i < n - 1; i++) {            if (str.charAt(i) == '1' && str.charAt(i + 1) == str.charAt(i)) {                juice += four_five[i + 2];            }        }        juice %= 1000000007;        System.out.println(juice);    }}挺不难的,但是挺多人全a也挂的#牛客AI配图神器#
查看3道真题和解析 投递OPPO等公司6个岗位
点赞 评论 收藏
分享
评论
4
8
分享

创作者周榜

更多
牛客网
牛客企业服务