2024年android面试题汇总(初级)-简书,ROMLite框架,androidui基础教程

可能有人会直接在Article中声明一个int类型userId属性,当作普通属性处理搞定,这种做法并没有做,但是没有体现出面向对象的思想。

面向对象是这样的:Article属于某个User

类这么定义:

[java]  view plain copy 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. package com.zhy.zhy_ormlite.bean;

  2. import com.j256.ormlite.field.DatabaseField;

  3. import com.j256.ormlite.table.DatabaseTable;

  4. @DatabaseTable(tableName = “tb_article”)

  5. public class Article

  6. {

  7. @DatabaseField(generatedId = true)

  8. private int id;

  9. @DatabaseField

  10. private String title;

  11. @DatabaseField(canBeNull = true, foreign = true, columnName = “user_id”)

  12. private User user;

  13. public int getId()

  14. {

  15. return id;

  16. }

  17. public void setId(int id)

  18. {

  19. this.id = id;

  20. }

  21. public String getTitle()

  22. {

  23. return title;

  24. }

  25. public void setTitle(String title)

  26. {

  27. this.title = title;

  28. }

  29. public User getUser()

  30. {

  31. return user;

  32. }

  33. public void setUser(User user)

  34. {

  35. this.user = user;

  36. }

  37. @Override

  38. public String toString()

  39. {

  40. return “Article [id=” + id + “, title=” + title + “, user=” + user

  41. + “]”;

  42. }

  43. }

不会去定义一个int类型的userId,而是直接定义一个User成员变量,表示本Article属于该User;

然后在User user属性上添加: @DatabaseField(canBeNull = true, foreign = true, columnName = “user_id”)

canBeNull -表示不能为null;foreign=true表示是一个外键;columnName 列名

User类暂且就两个属性:

[java]  view plain copy 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. package com.zhy.zhy_ormlite.bean;

  2. import com.j256.ormlite.field.DatabaseField;

  3. import com.j256.ormlite.table.DatabaseTable;

  4. @DatabaseTable(tableName = “tb_user”)

  5. public class User

  6. {

  7. @DatabaseField(generatedId = true)

  8. private int id;

  9. @DatabaseField(columnName = “name”)

  10. private String name;

  11. public User()

  12. {

  13. }

  14. public int getId()

  15. {

  16. return id;

  17. }

  18. public void setId(int id)

  19. {

  20. this.id = id;

  21. }

  22. public String getName()

  23. {

  24. return name;

  25. }

  26. public void setName(String name)

  27. {

  28. this.name = name;

  29. }

  30. @Override

  31. public String toString()

  32. {

  33. return “User [id=” + id + “, name=” + name

  34. + “]”;

  35. }

  36. }

现在看我们的ArticleDao

[java]  view plain copy 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. package com.zhy.zhy_ormlite.db;

  2. import java.sql.SQLException;

  3. import java.util.List;

  4. import android.content.Context;

  5. import com.j256.ormlite.dao.Dao;

  6. import com.zhy.zhy_ormlite.bean.Article;

  7. import com.zhy.zhy_ormlite.bean.User;

  8. public class ArticleDao

  9. {

  10. private Dao<Article, Integer> articleDaoOpe;

  11. private DatabaseHelper helper;

  12. @SuppressWarnings(“unchecked”)

  13. public ArticleDao(Context context)

  14. {

  15. try

  16. {

  17. helper = DatabaseHelper.getHelper(context);

  18. articleDaoOpe = helper.getDao(Article.class);

  19. } catch (SQLException e)

  20. {

  21. e.printStackTrace();

  22. }

  23. }

  24. /**

  25. * 添加一个Article

  26. * @param article

  27. */

  28. public void add(Article article)

  29. {

  30. try

  31. {

  32. articleDaoOpe.create(article);

  33. } catch (SQLException e)

  34. {

  35. e.printStackTrace();

  36. }

  37. }

  38. /**

  39. * 通过Id得到一个Article

  40. * @param id

  41. * @return

  42. */

  43. @SuppressWarnings(“unchecked”)

  44. public Article getArticleWithUser(int id)

  45. {

  46. Article article = null;

  47. try

  48. {

  49. article = articleDaoOpe.queryForId(id);

  50. helper.getDao(User.class).refresh(article.getUser());

  51. } catch (SQLException e)

  52. {

  53. e.printStackTrace();

  54. }

  55. return article;

  56. }

  57. /**

  58. * 通过Id得到一篇文章

  59. * @param id

  60. * @return

  61. */

  62. public Article get(int id)

  63. {

  64. Article article = null;

  65. try

  66. {

  67. article = articleDaoOpe.queryForId(id);

  68. } catch (SQLException e)

  69. {

  70. e.printStackTrace();

  71. }

  72. return article;

  73. }

  74. /**

  75. * 通过UserId获取所有的文章

  76. * @param userId

  77. * @return

  78. */

  79. public List

     listByUserId(int userId)

  80. {

  81. try

  82. {

  83. return articleDaoOpe.queryBuilder().where().eq(“user_id”, userId)

  84. .query();

  85. } catch (SQLException e)

  86. {

  87. e.printStackTrace();

  88. }

  89. return null;

  90. }

  91. }

接下来看我们的测试类:

[java]  view plain copy 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. public class OrmLiteDbTest extends AndroidTestCase

  2. {

  3. public void testAddArticle()

  4. {

  5. User u = new User();

  6. u.setName(“张鸿洋”);

  7. new UserDao(getContext()).add(u);

  8. Article article = new Article();

  9. article.setTitle(“ORMLite的使用”);

  10. article.setUser(u);

  11. new ArticleDao(getContext()).add(article);

  12. }

  13. public void testGetArticleById()

  14. {

  15. Article article = new ArticleDao(getContext()).get(1);

  16. L.e(article.getUser() + " , " + article.getTitle());

  17. }

  18. public void testGetArticleWithUser()

  19. {

  20. Article article = new ArticleDao(getContext()).getArticleWithUser(1);

  21. L.e(article.getUser() + " , " + article.getTitle());

  22. }

  23. public void testListArticlesByUserId()

  24. {

  25. List

     articles = new ArticleDao(getContext()).listByUserId(1);

  26. L.e(articles.toString());

  27. }

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

文章所有资料全部已经打包整理好,另外小编手头上整理了大量Android架构师全套学习资料,Android核心高级技术PDF文档+全套高级学习资料+视频+2021 BAT 大厂面试真题解析

资料展示:

image

image

image

image

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

示:**

[外链图片转存中…(img-HsxQGQKr-1712382550609)]

[外链图片转存中…(img-di69ZjaF-1712382550610)]

[外链图片转存中…(img-Rd1W15uf-1712382550610)]

[外链图片转存中…(img-BZyOQFoE-1712382550610)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值